#include<stdio.h> union u { char i; int j; }; int main(void) { int a=123; union u o; o.j=12; a=o.i; if(a=1);//如果删掉这行,再编译a就显示12,为什么呢? printf("xiaoduan");// printf("%d",a);// }
注意: if 里面写的赋值操作 = 而不是比较操作 ==!!!if(a=1);补充:老式编译器建议把 常量值放在 == 左侧,防止误写新式编译器一般会对上述代码中情况发出编译警告,为了可读性,可以把 变量放在 == 右侧警告即错误(除非你十分清楚)
注意: if 里面写的赋值操作
=
而不是比较操作==
!!!补充: