关于sizeof的问题

printf()分别输出2格字符常数和2格float型变量组成的表达式长度为什么是2和8
int a=1,b=2;
float c=8.2,d=4,6;
printf("%d",sizeof(a+b));
printf("%d",sizeof(c+d));
结果为什么是2和8
还是不明白 1个float不是4字节吗 c+d为什么就变成8了? 1个int是2字节 a+b为什么还是2呢

正如long54831所说,sizeof()的意思输出这个变量所占的内存字节数,而不同的编译器编译楼主所述代码,将产生不同的输出结果。楼主的输出结果可以这样来解释:
1、sizeof(a+b)统计变量a与b之和所占用的内存字节。int在楼主所用的编译器中解释为占用2个字节,a与b之和也是一个int类型的结果,所以输出还是为2。
2、sizeof(c+d)统计变量c与d之和所占用的内存字节。float在楼主所用的编译器中解释为占用4个字节,而c与d之和则被定义为double类型的结果,所以输出为8。

备注:我所用的VC++6.0,输出结果为4和4。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-03
sizeOf函数的意思是输出这个变量所占的内存字节数。a+b的结果还是个整形的变量,它占两个字节。所以输出2.浮点型的占8个字节,当然输出的是8了。
第2个回答  2008-06-03
我在VC上运行,输出是44

int在VC上是4个字节,在TC上是2字节
int跟int相加,还是int类型的

float是4个字节,两个float相加,
结果的类型应该还是4个字节

如果你的编译器把两个float相加的结果输出为8了
那么,说明它都把float扩展成double类型再相加的
第3个回答  2008-06-03
dev-c++ 4.9.9.2上运行,结果是4和4

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网