C语言题数据类型的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 19:10:48
若有定义:
int b=7;
float a=2.5,c=4.7;
则下面表达式值为:a+(int)(b/3*(int)(a+c)/2)%4
计算结果:
系统将算出的值转换为float :5.500000
但int 高级于float ,应该转换成int 吧,
int 是小数点后6个零 滴

二元算术操作符求值之前,必须先把它的两个操作数统一为相同的类型(统一为级别较高的类型),而float类型的级数比int类型高(int类型级别最低)。

因此在本题中,(int)(b/3*(int)(a+c)/2)%4 的类型是int型,a的类型是folat型,所以最终的结果也是float类型。

********************************************

附 类型转换表
int->unsigned int->long->unsigned long->float->double->long double
^
|
char,short

float 高于 int...

char-> int-> float-> double...