张世来4610484 发表于 2020-3-17 14:08:18

代码求解

#include <stdio.h>
main ()
{
        float b={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}},*p;
        p=b;
        p=*b+4;
        printf("%d",*p);
}
这样的一段代码,最后输出的是0,为什么,不应该是5吗

sunrise085 发表于 2020-3-17 14:21:39

本帖最后由 sunrise085 于 2020-3-17 14:31 编辑

因为你print中用的是%d。这是int类型的格式化符号。
int和float的内存大小不一样,所以会读错.
用union看一下就知道为什么是0 了。
#include <stdio.h>
int main ()
{
    union{
      float b;
      int c;
    }aa;
    aa.b=5;
    printf("%f\n",aa.b);
    printf("%x%x",aa.c,aa.c);
    return 0;
}
输出结果:
5.000000
40a000000
页: [1]
查看完整版本: 代码求解