关于C语言的基础编程,一个提问。NO.4
若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c的值的类型为 ( ) A.float B.int C.char D.double 请详细说下为什么~~怎么我根本看不懂。。。。
若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c的值的类型为 ( ) A.float B.int C.char D.double 请详细说下为什么~~怎么我根本看不懂。。。。
答案:答案是D,double类型的。
C语言在32位系统中表示类型的长度如下
char 1 Byte
int 4 Byte
float 4 Byte
double 8 Byte
a * b 的时候,表达式类型变成int了。
a * b + c 的时候,表达式类型就变成float了。
之后a * b + c + d的时候,表达式就变成double了。
你可以自己写个代码测试下,我的测试代码如下:
char a = 1;
int b = 2;
float c = 3.0;
double d = 4.0;
cout << "char:\t" << sizeof(a) << endl;
cout << "int:\t" << sizeof(b) <<endl;
cout << "float:\t" << sizeof(c) << endl;
cout << "double:\t" << sizeof(d) <<endl;
cout << "a * b + c + d:\t" << sizeof(aa * b + c + d) << endl;
这个代码在我32位机器上运行的结果是:
char: 1
int: 4
float: 4
double: 4
a * b + c + d: 8
其他:double型
表达式中数据类型不同时会遵循由低转高的原则
上一个:关于C语言的基础编程,一个提问。NO.7
下一个:C语言指针问题