为什么这段代码在Dev-C ++中显示a = 1120403456(可能是垃圾)的值。
#include<stdio.h>
int main()
{
int a=5;
float * pf;
pf=(float *)&a;
*pf=100.0;
printf("%d",a);
return 0;
}
答案 0 :(得分:1)
浮点数100.0在内存中表示为0x42C80000,十进制为1120403456.您打印出的是32位整数表示100.0。
答案 1 :(得分:0)
*pf=100.0;
当你取消引用它时,你的程序会调用未定义的行为,因为它违反了strict aliasing rule。你得到的值是 UB 。