跟著小甲魚學C語言 P53 位域

2021-09-27 03:28:31 字數 689 閱讀 1054

有些資料在儲存時並不需要占用乙個完整的位元組,只需要占用乙個或幾個二進位制位即可。例如微控制器開發中的開關只有通電和斷電兩種狀態,用 0 和 1 表示足以,也就是用乙個二進位。正是基於節省記憶體空間的考慮,c語言提供了一種叫做位域的資料結構。舉個例子:

struct bs;
:後面的數字用來限定成員變數占用的位數。成員 m 沒有限制,根據資料型別即可推算出它占用 4 個位元組(byte)的記憶體。成員 n、ch 被:後面的數字限制,不能再根據資料型別計算長度,它們分別占用 4、6 位(bit)的記憶體。

c語言標準規定,位域的寬度不能超過它所依附的資料型別的長度。通俗地講,成員變數都是有型別的,這個型別限制了成員變數的最大長度,:後面的數字不能超過這個長度。

例如上面的 bs,n 的型別是 unsigned int,長度為 4 個位元組,共計 32 位,那麼 n 後面的數字就不能超過 32;ch 的型別是 unsigned char,長度為 1 個位元組,共計 8 位,那麼 ch 後面的數字就不能超過 8。

c語言標準還規定,只有有限的幾種資料型別可以用於位域。在 ansi c 中,這幾種資料型別是 int、signed int 和 unsigned int(int 預設就是 signed int);到了 c99,_bool 也被支援了。

位域具體應該怎麼使用。

使用了位域的結構體的大小是多少位元組怎麼計算。

小鵬P5正式上市 補貼後售價15 79萬元起

程式設計客棧 www.cppcns.com 9月15日 訊息 今日晚間,小鵬汽車宣www.cppcns.com布小鵬p5車型正式上市。據官方介紹,小鵬p5共有460g 460e 550g 550e 550p 600p等程式設計客棧六款車型,共有星雲白 天青綠 星湖灰 星辰紅 星河紫 暗夜黑等六種外觀...

小甲魚 C 快速入門筆記 5 之輸出輸入小結

題目1 這個程式將向使用者提出乙個 y n 問題,然後把使用者輸入的值賦值給answer變數。要求 針對使用者輸入的 y 或 y 和 n 或 n 進行過濾 發掘程式可能存在的任何問題,想想為什麼?include using namespace std int main cin.ignore 100,...

小甲魚C 快速入門 P20 覆蓋方法和過載方法

就是說,父類中定義了乙個方法,但是子類繼承之後對這個方法產生了特殊的需求,需要對這個方法進行一些修改,那麼就可以在子類中定義乙個同名的方法覆蓋掉之前父類中的方法。注意,覆蓋方法時函式的形參和返回值都不能變化,不管是數量還是型別都不能變。與函式的過載是一樣的概念。乙個類中可以有幾個同名的方法,但這些方...