低→高:
char→short→int→unsigned→long→double
float→double
按理说float,int类型相加应该自动转换为double类型,因为都是向上转换的。
但如以下代码,结果实际输出为4
int a = 1; float b = 1.0; printf("%d\n",sizeof(a+b));
原因是K&R编译器 (二三十年前最早的C语言) 上是double,C89以后都是float。
低→高:
char→short→int→unsigned→long→double
float→double
按理说float,int类型相加应该自动转换为double类型,因为都是向上转换的。
但如以下代码,结果实际输出为4
int a = 1; float b = 1.0; printf("%d\n",sizeof(a+b));
原因是K&R编译器 (二三十年前最早的C语言) 上是double,C89以后都是float。