为什么浮点型指针寻址int显示未知数?

时间:2016-02-14 17:21:05

标签: c pointers

为什么这段代码在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;
}

2 个答案:

答案 0 :(得分:1)

浮点数100.0在内存中表示为0x42C80000,十进制为1120403456.您打印出的是32位整数表示100.0。

答案 1 :(得分:0)

*pf=100.0;

当你取消引用它时,你的程序会调用未定义的行为,因为它违反了strict aliasing rule。你得到的值是 UB