枚舉和一組預處理的#define有什么不同
只有很小的區別。C 標準中允許枚舉和其它整形類別自由混用而不會出錯。(但是, 假如編譯器不允許在未經明確類型轉換的情況下混用這些類型,則聰明地使用枚舉可以捕捉到某些程序錯誤。)
枚舉的一些優點: 自動賦值; 調試器在檢驗枚舉變量時, 可以顯示符號值; 它們服從數據塊作用域規則。
(編譯器也可以對在枚舉變量被任意地和其它類型混用時, 產生非重要的警告信息, 因為這被認為是壞風格。)
一個缺點是程序員不能控制這些對非重要的警告; 有些程序員則反感于無法控制枚舉變量的大小。
拓展:
(1)枚舉的`聲明:枚舉聲明用于聲明新的枚舉類型。
訪問修辭符 enum 枚舉名:基礎類型
{
枚舉成員
}
基 礎類型必須能夠表示該枚舉中定義的所有枚舉數值。枚舉聲明可以顯式地聲明 byte、sbyte、short、ushort、int、uint、long 或 ulong 類型作為對應的基礎類型。沒有顯式地聲明基礎類型的枚舉聲明意味著所對應的基礎類型是 int。
(2)枚舉成員
枚舉成員是該枚舉類型的命名常數。任意兩個枚舉成員不能具有相同的名稱。每個枚舉成員均具有相關聯的常數值。此值的類型就是枚舉的基礎類型。每個枚舉成員的常數值必須在該枚舉的基礎類型的范圍之內。
示例:
public enum TimeofDay:uint
{
Morning=-3,
Afternoon=-2,
Evening=-1
}
產生編譯時錯誤,原因是常數值 -1、-2 和 –3 不在基礎整型 uint 的范圍內。
(3)枚舉成員默認值
在枚舉類型中聲明的第一個枚舉成員它的默值為零。
以后的枚舉成員值是將前一個枚舉成員(按照文本順序)的值加 1 得到的。這樣增加后的值必須在該基礎類型可表示的值的范圍內;否則,會出現編譯時錯誤。
示例:
public enum TimeofDay:uint
{
Morning,
Afternoon,
Evening
}
Morning的值為0,Afternoon的值為1,Evening的值為2。
【枚舉和一組預處理的#define有什么不同】相關文章:
枚舉與#define宏的區別12-17
西式快餐和中餐有什么不同09-30
圍棋和其它棋類有什么不同09-04
昆曲昆劇和昆腔有什么不同09-09
專插本和本科有什么不同04-04
開除黨籍和除名有什么不同03-15
民族唱法和通俗唱法有什么不同09-07
戀愛和結婚到底有什么不同08-26
CAD中外部參照和圖塊有什么不同11-12