最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言的位段與枚舉詳解

 更新時間:2022年02月09日 12:24:05   作者:Slow?Just?Fast  
這篇文章主要為大家詳細介紹了C語言的位段與枚舉,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1.什么是位段? 

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

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

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

例如:

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

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

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

特別提醒: 

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

2. 位段的空間上是按照需要以4個字節(jié)( int )或者1個字節(jié)( 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;

 位段的跨平臺問題:

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

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

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

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

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

位段的應用: 

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.枚舉的優(yōu)點與使用 

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

枚舉的優(yōu)點: 

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

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

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

4. 便于調試

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

枚舉的使用:

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

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!      

相關文章

  • 基于WTL中使用雙緩沖避免閃爍的解決方法

    基于WTL中使用雙緩沖避免閃爍的解決方法

    本篇文章是對WTL中使用雙緩沖避免閃爍的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實現(xiàn)方法

    C語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狢語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • c++大數(shù)階乘的實現(xiàn)方法

    c++大數(shù)階乘的實現(xiàn)方法

    本篇文章對c++的大數(shù)階乘進行了代碼示例的介紹。需要的朋友參考下
    2013-05-05
  • C++中double浮點數(shù)精度丟失的深入分析

    C++中double浮點數(shù)精度丟失的深入分析

    這篇文章主要給大家介紹了關于C++中double浮點數(shù)精度丟失的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • c++運算符重載基礎知識詳解

    c++運算符重載基礎知識詳解

    運算符重載是一種形式的C++多態(tài)。運算符重載將重載的概念擴展到運算符上,允許賦予C++運算符多種含義
    2014-03-03
  • 談談C++中的單例

    談談C++中的單例

    這篇文章主要介紹了C++中單例的相關資料,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-09-09
  • C++ 中隨機函數(shù)random函數(shù)的使用方法

    C++ 中隨機函數(shù)random函數(shù)的使用方法

    這篇文章主要介紹了C++ 中隨機函數(shù)random函數(shù)的使用方法的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C語言入門篇--初識指針和指針變量

    C語言入門篇--初識指針和指針變量

    本篇文章是基礎篇,適合c語言剛入門的朋友,本文對初識c語言的指針和指針變量做了簡單的分析,幫助大家快速入門c語言的世界,更好的理解c語言
    2021-08-08
  • C語言結構體內存對齊問題小結

    C語言結構體內存對齊問題小結

    本文主要講解了C語言中結構體的內存對齊規(guī)則、計算方法以及影響因素,包括對齊規(guī)則的四個要點、內存對齊的原因、如何修改默認對齊數(shù)以及結構體傳參時的注意事項,此外,還介紹了結構體位段的概念、內存分配和使用注意事項,感興趣的朋友一起看看吧
    2025-02-02
  • C語言二叉排序樹的創(chuàng)建,插入和刪除

    C語言二叉排序樹的創(chuàng)建,插入和刪除

    本文主要介紹了Java實現(xiàn)二叉排序樹的查找、插入、刪除、遍歷等內容。具有很好的參考價值,下面跟著小編一起來看下吧
    2021-10-10

最新評論

阜新市| 舞阳县| 旌德县| 尉氏县| 长沙县| 丁青县| 温州市| 金川县| 银川市| 肃宁县| 大庆市| 韶山市| 双柏县| 武定县| 乌什县| 鄂尔多斯市| 巴塘县| 长武县| 元朗区| 泊头市| 佛学| 民权县| 景泰县| 丰原市| 永嘉县| 肥西县| 云梦县| 濮阳县| 建平县| 垣曲县| 姚安县| 靖安县| 汉沽区| 崇左市| 上栗县| 凤城市| 绥江县| 南阳市| 武威市| 永丰县| 定襄县|