Promocje typów całkowitych
Obiekty typu całkowitego można konwertować do innego, szerszego typu całkowitego (to znaczy typu, który reprezentuje większy zbiór wartości).Ta rozszerzająca typ konwersja nazywa się "promocją typu całkowitego." Dzięki promocji typu całkowitego, w wyrażeniach, wszędzie tam, gdzie można użyć innego typu całkowitego, można użyć:
Obiektów, literałów i stałych typu char i short int
Typów wyliczeniowych
Pól bitowych int
Modułów wyliczających
Promocje w C++ "zachowują wartość." Oznacza to, że wartość po promocji jest taka sama, jak wartość przed promocją.W zachowujących wartość promocjach, obiekty krótszych typów całkowitych (takie jak pola bitowe lub obiekty typu char) są promowane do typu int, jeśli int może reprezentować pełny zakres oryginalnego typu.Jeśli int nie może reprezentować pełnego zakresu wartości, obiekt jest promowany do typu unsigned int.Chociaż ta strategia jest taka sama, jak te stosowane w ANSI C, zachowujące wartość konwersje nie zachowują znaku obiektu.
Zachowujące wartość promocje i promocje, które zachowują znak zazwyczaj generują te same wyniki.Jednak mogą one wygenerować różne wyniki, jeśli promowany obiekt jest jednym z poniższych:
Operand /, %, /=, %=, <, <=, > lub >=
Operatory te opierają się na znaku w celu określenia wyniku.W związku z tym, zachowujące wartość i znak promocje generują różne wyniki przy zastosowaniu do tych operandów.
Lewy operand z >> lub >>=
Podczas wykonywania operacji przesunięcia operatory te inaczej traktują liczby ze znakiem i bez znaku.Dla liczb ze znakiem, przesunięcie liczby w prawo powoduje propagację bitu znaku na pozycje opuszczonych bitów.Dla liczb bez znaku, opuszczone pozycje bitowe są wypełniane zerami.
Argument do przeciążonej funkcji lub operand przeciążonego operatora, który zależy od tego czy typ określa znak tego operandu dla dopasowywania argumentów. (Aby uzyskać więcej informacji dotyczących definiowania przeciążonych operatorów, zobacz Operatory przeciążone).