学习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,显然不对,这种类型不匹配行为导致结果未知