作者kumusou ()
看板C_and_CPP
標題[問題]課本上關於union的一個範例
時間Sat May 24 17:53:29 2014
#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
才對吧?!
有請高手指教 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.243.79.235
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1400925212.A.687.html
推 LPH66:那個 :1 代表那個成員只佔 1 bit 05/24 18:13
→ LPH66:另外宣告成 bool 是不行的, 因為 bool 佔 1 byte 05/24 18:13