[问题]课本上关于union的一个范例

楼主: kumusou   2014-05-24 17:53:29
#include <stdio.h>
#include <stdlib.h>
struct sample{
unsigned a: 1;
unsigned b: 1;
unsigned c: 1;
unsigned d: 1;
unsigned e: 1;
unsigned f: 1;
unsigned g: 1;
unsigned h: 1;
};
union key_type{
char ch;
struct sample bits;
}key;
int main(){
key.ch = getche();
if(key.bits.h) printf("1"); else printf("0");
if(key.bits.g) printf("1"); else printf("0");
if(key.bits.f) printf("1"); else printf("0");
if(key.bits.e) printf("1"); else printf("0");
if(key.bits.d) printf("1"); else printf("0");
if(key.bits.c) printf("1"); else printf("0");
if(key.bits.b) printf("1"); else printf("0");
if(key.bits.a) printf("1"); else printf("0");
return 0;
}
这题我觉得奇怪的是
union应该释放变量中占内存位置最大的吧?!
所以也就是 struct sample : 4 * 8 = 32 Byte
而char 只占一个byte
那他怎么利用这种方法将char 的ch 转成二进位制的?
依造他的想法 struct sample的a -h应该要宣告成bool
才对吧?!
有请高手指教 谢谢
作者: LPH66 (-6.2598534e+18f)   2014-05-24 18:13:00
那个 :1 代表那个成员只占 1 bit另外宣告成 bool 是不行的, 因为 bool 占 1 byte
作者: s25g5d4 (function(){})()   2014-05-24 18:15:00

Links booklink

Contact Us: admin [ a t ] ucptt.com