C语言问题一道

来源:百度知道 编辑:UC知道 时间:2024/05/25 14:26:38
printf("%d\n",2.8*3.3);
printf("%f\n",2.8*3.3);

为什么结果第二行的结果是正确的,而第一行的结果那么诡异?
第一行结果为什么不是9呢?

数据类型不同
第一个是int的,当然被转换成整型输出,所以结果就错了,应该不是9,是乱七八糟的数,因为原来的数据16位被存成8位,具体是什么样很难说
第二个是float型的,自然就正确了

数据类型的长度不同,所以用不同单位长度得出的数值也不同。

注意看看,%d表示输出的是整数,%f表示输出的是单精度实型数,即小数点后面有六位的小数。