為什麼C語言中bool型變數占用乙個位元組

2021-06-26 16:35:17 字數 426 閱讀 7125

c99標準新增bool型資料,占用乙個位元組,不滿8bit的部分(可能)會填0對齊。

1.效率:cpu 一下子就能處理 32bit or 64bit的資料,所以直接填滿了來處理,這樣可能效率更高。比如說,有的目標平台處理雙位元組的速度比單位元組要快,於是很多單位元組資料型別就可以用自定義乙個雙位元組型別代替。bool亦如是,只不過是把自定義(成單位元組資料)這件事轉給編譯器做了而已。

2.定址:如果要是有只占用乙個 bit 的變數,那麼它儲存的時候也應該是只占用乙個 bit,假設這乙個 bit 放在乙個空的byte 的首位,那麼剩下的七個 bit要怎麼處理呢?存東西還是不存東西?如果要存,那麼之後的順序就都亂了------位址值要具體到每乙個 byte 了,8 =2^3,所以位址值直接增加三位,這樣整個系統的代價太大了。所以就直接用 byte來儲存,浪費點是難免的,要以大局為重。(類似於結構體的位元組對齊現象)。

c語言中有bool型變數嗎?

c語言裡面是沒有bool 布林 型別的,c 裡面才有,這就是說,在c 裡面使用bool型別是沒有問題的。bool型別有只有兩個值 true 1 false 0。但是,c99標準裡面,又定義了bool型別變數。這時,只要引入標頭檔案 就能在c語言裡面正常使用bool型別。或者自己定義 typedef ...

c語言中有bool型變數嗎?

c語言裡面是沒有bool 布林 型別的,c 裡面才有,這就是說,在c 裡面使用bool型別是沒有問題的。bool型別有只有兩個值 true 1 false 0。但是,c99標準裡面,又定義了bool型別變數。這時,只要引入標頭檔案 就能在c語言裡面正常使用bool型別。或者自己定義 typedef ...

C語言中bool變數的深入理解

目錄 在一些高階語言當中,為了能夠完成更好的邏輯判斷,因此就有了bool型別,bool型別的變數值只有true和false兩種。而在c語言中,一般認為0為假,非0為真。這是因為c99之前,c90是沒有bool型別的的。但是c99引入了 bool型別 bool就是乙個型別,不過在新增標頭檔案stdbo...