看板 C_and_CPP 關於我們 聯絡資訊
#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
s25g5d4:http://tinyurl.com/ndsq2u8 05/24 18:15