首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

学习union关键字时,让人匪夷所思!解决思路

2012-04-25 
学习union关键字时,让人匪夷所思!![size16px][/size]帮忙看一下,p-str.m 在输出结果中为什么会不一样??p

学习union关键字时,让人匪夷所思!!
[size=16px][/size]帮忙看一下,p->str.m 在输出结果中为什么会不一样??


p->str.m 在第一行是 101
p->str.m 在第一行是 102
具体可见图片:输出结果

//代码

C/C++ code
#include<stdio.h>union{        int i;        int a[2];        double d;        char cc[8];        struct {            char c;            int m;            } str;        }*p,u;int main(){    p = &u;    p->a[0] = 0x65;    p->a[1] = 0x66;    p->cc[2] = 0x69;    printf("p->i %d    p->d %d p->str.c %c  p->str.m %d\n",p->i,p->d,p->str.c,p->str.m);    printf("p->i %d    p->d %d p->str.m %d  p->str.c %c\n",p->i,p->d,p->str.m,p->str.c);    system("pause");    return 1;    }

内存图:

输出结果:


[解决办法]
p->d是double类型,输出却是%d,显然不对,这种类型不匹配行为导致结果未知

热点排行