【发布时间】:2013-07-23 15:22:13
【问题描述】:
为什么会输出以下代码:“i is: 1075838976”?
#include <stdio.h>
int main(){
int i = 2;
float num = 2.5;
i = *((int *)& num);
printf("i is: %d\n", i);
}
不就相当于:
#include <stdio.h>
int main(){
int i = 2;
float num = 2.5;
i = num;
printf("i is: %d\n", i);
}
哪个输出:“i is 2”? 谢谢。
【问题讨论】:
-
不,它(显然)不等价。一个重新解释位模式(在途中调用未定义的行为),另一个进行值转换。
-
高度相关,甚至可能重复:stackoverflow.com/q/3452439/319403