在C语言中,类型转换分为两类:强制类型转换和隐式类型转换
强制类型转换,就是程序员强制进行的:
eg:
short i=5;
float j=(float)i;
强制类型转换的结果为左值类型,但是需要注意不是所有强制类型都能成功。
eg:
struct node
{
int m;
int n;
};
int i=(int)p;
输出:error C2440: “类型转换”: 无法从“node”转换为“int”
隐式类型转换:编译器自动进行的转换,需要主要的是,一般低类型到高类型是安全的如char转为int,而高类型到低类型则会截断,如float型到int型。
在实际工程中,隐式类型一般会发生转换的位置在:
算术运算中,如一个float类型与int类型做运算
赋值表达式,其值类型为左值类型
函数调用,实参到形参
函数返回,return语句返回值转换为返回值类型。