C 筆記(共用體和列舉)

2021-10-07 01:28:27 字數 1354 閱讀 7587

1.共用體

共用體是一種資料格式,能夠儲存不同的資料型別,常用於節省記憶體。

共用體宣告如下:

union test

; 共用體與結構體不同,例如結構體可以同時儲存int和double,共用體只可以儲存int或double(需要在不同的時間進行,

例如下方程式)。

test work;

work.a =1;

cout << work.a << endl;

work.b =

2.5;

cout << work.b << endl;

2. 列舉(enumeration)

enum temp 

;//例1

如例1所示,temp就被稱為列舉,其中的a,b,c,d,e,f為列舉量(enumerator),預設情況下第乙個列舉量對應的整

數值為0,第二個列舉量對應的整數值為1,以此遞推。

enum

;//例2

如例2所示,如果不打算建立列舉型別的變數,只使用常量,可以省略列舉型別的名稱。

在例1中列舉量的值是預設的,我們可以用賦值運算子顯式的設定列舉量的值:

enum temp1

;//例3

其中指定的值必須為整數,也可以只定義其中的一部分列舉量:

enum temp2

;//例4

其中a的預設值為0,未初始化的列舉量的值比其前邊的列舉量大1,則在這裡c的值為6。

下面是關於列舉的取值範圍:

首先要找出上限,要知道列舉量的最大值,如例3中最大值為7,我們需要找到比7大的而且是最小的2的冪,並將這個

值減去1,就得到了列舉的上限,比7大的最小的2的冪是8,減去1是7,所以例3的上限就為7。

然後我們找下限,要知道列舉的最小值,如果最小值不小於0,則下限就為0。如果最小值小於0,例如最小值為-

3, 我們就需要找比-

3小的而且是最大的2的冪,加上1,就得到了下限,比-

3小的最大的2的冪為-

4(加上負號),然後

下限就為-

3。

列舉的一些知識:

(1)為獲得最大限度的可移植性,應該把非enum值賦值給enum變數視為錯誤。

(2)對於列舉只定義了賦值運算子,沒有為列舉定義算術運算子。

(3)列舉量是整型,可以被提公升為int型別,但int型別不能自動轉換為列舉型別。

(4)如果int值有效,可以通過強制型別轉換將其賦給列舉變數。

(5)可以建立多個值相同的列舉量。

總結自《c++ primer plus 第六版》

C 結構體 共用體和列舉

結構體就不做多的介紹了,只說說他的位欄位 struct sct 共用體是一中資料格式,他能夠儲存不同的資料型別,但只能同時儲存其中的一種型別。include using namespace std union uno int main 列舉可以代替const,在預設情況下,列舉變數的列舉值為0,1,...

c 結構體 共用體和列舉

結構體型別 c 中的結構體成員既可以是資料,也可以是函式 c語言中定義結構體變數必須加struct 這也是很多時候和typedef 但是在c 裡面,可以不加 結構體和類的不同在於,結構體中的變數預設是public型別,而類則預設是private struct空間計算 1 整體空間是占用空間最大成員 ...

C 結構體 共用體 列舉

一 結構體 首先為什麼要使用結構體?比如說你要儲存乙個學生的資訊,包含 姓名 char 學號 int 成績 double 我們希望可以把這些資訊放在乙個單元中,陣列滿足不了這種要求,因為陣列中每個元素的型別是一樣的。所以我們就需要別外一種資料格式,以就是現在要說的結構體 結構體是由使用者自己定義的一...