如果仅仅是这个程序的话,那我想,它的作用就是教学示范作用,没有真正意义上的作用。
union按照我的理解,是把两种互相不可能同时出现并且又彼此相关的数据定义在一个union中,达到节约内存使用的目的。
计算方法 wn541200 已经说得很清楚了,最终输出的计算结果就是 0000 0001 0000 1010 对应的十进制数,也就是 266。
用的是TC吧,int占二个字节,定义成共用体就可以一次用两个字节,也可以一次用一个字节.x.c[0]=10; 低8位赋值 0000 1010 . x.c[1]=1; 高8位赋值0000 0001
printf(" %d",x.i); 将两个字节合并输出,输出 0000 0001 0000 1010 这个二进制数对应的十进制数.
就是将c[0]和c[1]两个8位的合成一个16位的.再算. 合成后变成0000 0001 0000 1010
再把相应的二进制化为十进制. 2的8次方 + 2的3次方 + 2的1次方 = 266