【发布时间】:2011-08-29 16:00:48
【问题描述】:
我写了以下程序
#include <stdio.h>
main()
{
int i = 2;
float c = 4.5;
printf("%d\n",c);
printf("%f\n",i);
return 0;
}
虽然我知道这是错误的做法,但当我运行程序时,我得到了答案
0
4.500000
但是当我以这种方式交换 printf 语句时
#include <stdio.h>
main()
{
int i = 2;
float c = 4.5;
printf("%f\n",i);
printf("%d\n",c);
return 0;
}
输出是
0.000000
0
我不明白发生了什么,请任何人解释一下。
【问题讨论】:
-
你需要检查浮点是如何表示的en.wikipedia.org/wiki/Floating_point
-
玩未定义的行为,是吗?为什么你对到底发生了什么如此感兴趣?取而代之的是,您可以花时间学习很好编码,不要使用任何导致未定义行为的东西,并且有一个很多 在那里学习,所以,我投票赞成“不要在这上面浪费你的时间”
-
@Armen Tsirunyan ......你是对的......但是编码也可以从异常行为中学习,确切地说你会知道编译器的行为。如果你试图接受它给出的一切,那就叫抢劫!