91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中位段與枚舉是什么意思

發布時間:2022-02-09 14:26:57 來源:億速云 閱讀:147 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關C語言中位段與枚舉是什么意思,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1.什么是位段? 

位段的聲明和結構是類似的,有兩個不同: 

①位段的成員必須是 int、unsigned int 或signed int 

②位段的成員名后邊有一個冒號和一個數字 

例如:

struct A
{
        //4byte=32bit    int 4個字節
        //開辟4個字節
        int _a : 2 ;//30(分配了2字節,還剩30字節)
        int _b : 5 ;//25
        int _c : 10 ;//15
        //在開辟4個字節
        int _d : 30 ;//超出剩余的開辟內存大小,根據C標準可能用前面的15字節在開辟15字節                             //也可能不用重新開辟30字節
};

C語言中位段與枚舉是什么意思

 簡言之:位段就是規定變量占的比特位!

2.位段的內存分配、跨平臺與使用 

特別提醒: 

1. 位段的成員可以是 int unsigned int signed int 或者是 char (屬于整形家族)類型 

2. 位段的空間上是按照需要以4個字節( int )或者1個字節( char )的方式(char準確來說是int類型,反匯編內部處理為int)來開辟的

3. 位段涉及很多不確定因素,位段是不跨平臺的,注重可移植的程序應該避免使用位段(問題在于多余內存使用和開辟上) 例如:

struct S {
char a:3;
char b:4;
char c:5;
char d:4;
};
struct S s = {0};
s.a = 10; 
s.b = 12; 
s.c = 3;
s.d = 4;

C語言中位段與枚舉是什么意思

 位段的跨平臺問題:

1. int 位段被當成有符號數還是無符號數是不確定的。 

2. 位段中最大位的數目不能確定。(16位機器最大16,32位機器最大32,寫成27,在16位機 器會出問題。 

3. 位段中的成員在內存中從左向右分配,還是從右向左分配標準尚未定義。 

4. 當一個結構包含兩個位段,第二個位段成員比較大,無法容納于第一個位段剩余的位時,是 舍棄剩余的位還是利用,這是不確確定的。 

總結: 跟結構相比,位段可以達到同樣的效果,但是可以很好的節省空間,但是有跨平臺的問題存在 

位段的應用: 

C語言中位段與枚舉是什么意思

3.什么是枚舉? 

枚舉顧名思義就是一一列舉。 

把可能的取值一一列舉。 

例如:

//(可能取值都是有值的,默認從0開始,一次遞增1,當然在定義的時候也可以賦初值)
enum Day//星期
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
enum Sex//性別
{
MALE,
FEMALE,
SECRET
};
enum Color//顏色
{
RED,
GREEN,
BLUE
};
//以上定義的 enum Day , enum Sex , enum Color 都是枚舉類型
//{}中的內容是枚舉類型的可能取值,也叫枚舉常量
//枚舉的初始化
enum Color//顏色
{
RED=1,
GREEN=2,
BLUE=4
};

4.枚舉的優點與使用 

我們可以使用 #define 定義常量,為什么非要使用枚舉? 

枚舉的優點: 

1. 增加代碼的可讀性和可維護性

2. 和 #define 定義的標識符比較枚舉有類型檢查,更加嚴謹。

3. 防止了命名污染(封裝)

4. 便于調試

5. 使用方便,一次可以定義多個常量 

枚舉的使用:

enum Color // 顏色
{
RED = 1 ,
GREEN = 2 ,
BLUE = 4
};
enum Color clr = GREEN ; // 只能拿枚舉常量給枚舉變量賦值,才不會出現類型的差異。
clr = 5;               //這樣是錯誤的!

關于“C語言中位段與枚舉是什么意思”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵璧县| 苗栗县| 仁寿县| 菏泽市| 会理县| 桃江县| 株洲市| 唐山市| 拉萨市| 平江县| 玛纳斯县| 遂溪县| 孟村| 庆元县| 罗源县| 普宁市| 萨迦县| 于田县| 昌黎县| 汾阳市| 克东县| 鸡泽县| 伊金霍洛旗| 博野县| 静宁县| 昆明市| 广水市| 绥棱县| 博客| 仙居县| 侯马市| 阿克陶县| 巴中市| 汉川市| 长子县| 全州县| 高邑县| 溧阳市| 施甸县| 容城县| 烟台市|