整數提升
整數類資料類型的物件可以轉換成另一種範圍更廣的整數類資料類型 (也就是可代表一組更大範圍值的類型)。 這種擴展的轉換類型稱為「整數提升」。整數提升可在能夠使用另一種整數類資料類型時,讓您在運算式中使用下列項目:
char 和 short int 類型的物件、常值和常數
列舉類型
int 位元欄位
列舉程式
C++ 提升為「保留值」。也就是說,保證提升後的值會和提升之前的值一樣。 在保留值的提升中,較短的整數類資料類型物件 (例如 char 類型的位元欄位或物件) 會提升為 int 類型 (如果 int 能夠代表原始類型的完整範圍)。 如果 int 無法代表值的完整範圍,則物件會提升為 unsigned int 類型。 雖然這種策略與 ANSI C 所使用的策略相同,但是保留值的轉換不會保留物件的正負號狀態。
保留值的提升和保留正負號狀態的提升通常會產生相同的結果。 不過,如果提升的物件是下列其中一項,則兩者可能會產生不同的結果:
/、%、/=、%=、<、<=、> 或 >= 的運算元
這些運算子需要依據正負號判斷結果。 因此,保留值和保留正負號的提升套用至這些運算元時,會產生不同的結果。
>> 或 >>= 的左運算元
執行移位作業時,這些運算子會將帶正負號和不帶正負號的數量視為不同。 對於帶正負號的數量,將數量右移會造成正負號位元傳播至空出的位元位置。 對於不帶正負號的數量,空出的位元位置會以零填滿。
多載函式的引數,或是依據運算元類型的正負號狀態進行引數比對的多載運算子之運算元 (如需定義多載運算子的詳細資訊,請參閱多載運算子)。