【发布时间】:2013-10-20 09:41:12
【问题描述】:
#include<stdio.h>
#include<math.h>
int main()
{
printf("%f",3/2);
printf(" %d",3/2);
printf(" %d",3<<2);
return 0;
}
这是我的代码,我希望得到 1.50000 1 12
但我收到了 2.168831 1 12
作为我的输出。
【问题讨论】:
-
整数除法产生整数,它会截断小数部分。这在每个相当不错的初学者 C 教程中都有写,在 Stack Overflow 上至少有一百个答案。做一些研究。
-
您好,感谢您的回复,我很新在这里很抱歉尝试搜索但无法搜索。另外,如果你能告诉我它是如何工作的......因为在我的脑海里它是 (int)3/2 = (int)1 然后浮点值应该是 1.000000
-
是什么让您相信它应该是 1.000?
printf()不是魔法。它对您传递给它的表达式的类型完全一无所知(这就是您必须使用格式字符串的原因)。这不是魔术。但是阅读已接受的重复答案,您就会知道。 -
如果我错了,请纠正我,但显示的值是垃圾值还是有什么意义?
-
由于未定义的行为,它没有意义。 已阅读链接问题的答案。