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