[問題] 怎麼算sizeof bit field?

看板C_and_CPP作者 (UbuntuSeeker)時間15年前 (2010/10/08 05:42), 編輯推噓9(908)
留言17則, 10人參與, 最新討論串1/2 (看更多)
遇到的問題 : 利用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++ 先謝謝大家的回答 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.172.120.249

10/08 05:44, , 1F
我想問的是為什麼 sizeof(A)=4 怎麼算的? 謝謝大家
10/08 05:44, 1F

10/08 06:24, , 2F
4 大概只是 alignment 的結果吧...(不過在64-bit上卻又很怪)
10/08 06:24, 2F

10/08 07:38, , 3F
雖然我不知道其原理, 不過你可以玩玩三種寫法 (1)把
10/08 07:38, 3F

10/08 07:39, , 4F
所有int換成char (2)int、char混用 (3)全部是char卻用
10/08 07:39, 4F

10/08 07:39, , 5F
超過8 bit 會有神奇的事情發生喔 :)
10/08 07:39, 5F

10/08 08:24, , 6F
在UNICODE或UTF8下CHAR早就不只8 bit了.
10/08 08:24, 6F

10/08 08:34, , 7F
樓上可以告訴我哪個平台 char 大小不是 1Byte的嗎?Orz
10/08 08:34, 7F

10/08 08:36, , 8F
原來規格書規定都是屁阿~
10/08 08:36, 8F

10/08 09:13, , 9F
我也很好奇為什麼是4???
10/08 09:13, 9F

10/08 09:23, , 10F
因為g++勤儉持家,怕你浪費空間的關係嗎...
10/08 09:23, 10F

10/08 10:39, , 11F
我第一次看過有人說 char 不是 8bit 的 -.-""
10/08 10:39, 11F

10/08 10:42, , 12F
推論其語義的話,UTF-8是編碼,沒有char這個資料型態
10/08 10:42, 12F

10/08 10:42, , 13F
他指的應該是某個字(英文要用什麼?),大小不一定是8
10/08 10:42, 13F

10/08 11:26, , 14F
word??
10/08 11:26, 14F

10/08 11:39, , 15F
WCHAR?
10/08 11:39, 15F

10/08 12:38, , 16F
螞蟻書有寫關於 bit field, 詳情忘了
10/08 12:38, 16F

10/17 00:58, , 17F
在windows上WCHAR是typedef成short
10/17 00:58, 17F
文章代碼(AID): #1ChZxIBy (C_and_CPP)
文章代碼(AID): #1ChZxIBy (C_and_CPP)