Каждый целочисленный тип имеет следующее integer conversion rank определение:
Никакие два знаковых целочисленных типа, кроме char и signed char (если char знаковый), не должны иметь одинаковый ранг, даже если они имеют одинаковое представление.
Ранг целочисленного типа со знаком должен быть выше ранга любого целочисленного типа со знаком меньшего размера.
Ранг long long int должен быть выше ранга long int, который должен быть выше ранга int, который должен быть выше ранга short int, который должен быть выше ранга signed char.
Ранг любого целочисленного типа без знака должен равняться рангу соответствующего целочисленного типа со знаком.
Ранг любого стандартного целочисленного типа должен быть выше ранга любого расширенного целочисленного типа того же размера.
Ранг char равен рангу signed char и unsigned char.
Ранг bool должен быть меньше ранга всех других стандартных целочисленных типов.
Ряды char16_t, char32_tи wchar_t равняются ряды их underlying types.
Ранг любого расширенного целочисленного типа со знаком относительно другого расширенного целочисленного типа со знаком того же размера определяется реализацией, но по-прежнему подчиняется другим правилам определения ранга преобразования целого числа.
Для всех целочисленных типов T1, T2и T3, если T1 имеет больший ранг T2 и T2 имеет больший ранг T3, то T1 должен иметь больший ранг, чем T3.
[ Note: Ранг целочисленного преобразования используется в определении integral promotions и usual arithmetic conversions. ] — end note