Re: [問題] 怎麼算sizeof bit field?
※ 引述《UbuntuSeeker (UbuntuSeeker)》之銘言:
: 遇到的問題 :
: 利用sizeof計算struct的大小,例如:
: struct {
: int a;
: int b;
: int c;
: } A;
: 那麼, sizeof(A) = 4 * 3 = 12
: 而如果是bit field,例如:
: struct {
: int a:1;
: int b:2;
: int c:1;
: } A;
: 我想請問各位大大該怎麼算sizeof(A)???
: 跑出來的結果是 sizeof(A) = 4
: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
: Linux 64bits
: g++
: 先謝謝大家的回答 :)
沒用過 64 位元硬體經驗。
C/C++ 規格稍微翻沒查到就放棄了,也許有大大看過,講錯還請指正。
就我認知 int 大小是由 implement-defined,需要保證
sizeof(short) <= sizeof(int) <= sizeof(long)
剛隨便翻看到這篇資料
http://en.wikipedia.org/wiki/64-bit#64-bit_data_models
↑進去後直接往下拉看到第一個表格,其意思好像是說,
sizeof(int) 在 64 位元 CPU,且 OS 為 Windows 或 Ubuntu 時,值是 4 (bytes)。
而你只有四個位元,沒有超過 4 bytes,所以編譯器只需要用一個 int 去存放這些
bit fileds 即可。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.134.21
推
10/08 15:01, , 1F
10/08 15:01, 1F
推
10/09 12:40, , 2F
10/09 12:40, 2F
→
10/09 12:40, , 3F
10/09 12:40, 3F
→
10/09 12:41, , 4F
10/09 12:41, 4F
→
10/09 12:41, , 5F
10/09 12:41, 5F
→
10/09 12:42, , 6F
10/09 12:42, 6F
→
10/09 16:07, , 7F
10/09 16:07, 7F
→
10/09 16:08, , 8F
10/09 16:08, 8F
→
10/09 16:09, , 9F
10/09 16:09, 9F
→
10/09 16:09, , 10F
10/09 16:09, 10F
→
10/17 00:59, , 11F
10/17 00:59, 11F
→
10/17 01:00, , 12F
10/17 01:00, 12F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):