枚舉的取值範圍

    每個枚舉都有取值範圍,通過強制類型轉換,可以將取值範圍內的任何整數賦給枚舉變量,即使這個值不是枚舉值.例如:假設bits和Myflag的定義如下:


enum bits{one = 1,two = 2,four = 4,eight};

bits bit;

則bit = bits(6);是合法的,其中,6不是枚舉值,但它是屬於枚舉值範圍內的.

    取值範圍定義如下:

    首先,要找到上線,找到枚舉量的最大值,找到大於這個最大值的,最小的2的冪,將它減去1,便是取值範圍的上限,例如對於:

enum bigstep{first,second = 100,third};最大枚舉值是101,在2的冪中,比這個值大的最小的值爲128,因此取值範圍上限爲127.要知道下限,需要知道枚舉量的最小值.如果它不小於0,則取值範圍的下限爲0.否則,採取與尋找上限方式同樣的方式,但加上負號,例如,如果最小的枚舉量爲-6,則比它小的,2的冪最大的值爲-8,加1之後爲-7.於是,上限與下限便能算出來.


//但是論壇裏有人說這個與編譯器有關,若把enum的類型作爲int的,取值範圍爲-2,147,483,648 <= X <= 2,147,483,647,若爲long型,則更大.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章