Как последнее целочисленное продвижение управляет, когда-нибудь применяются в C?

6.3.1.8p1: Иначе целочисленные продвижения выполняются на обоих операндах. Затем следующие правила применяются к продвинутым операндам: Если оба операнда имеют тот же тип, то никакое дальнейшее преобразование не необходимо. Иначе, если оба операнда имеют типы целого числа со знаком, или у обоих есть типы беззнаковых целых чисел, операнд с типом меньшего целочисленного разряда преобразования преобразовывается в тип операнда с большим разрядом. Иначе, если операнд, который имеет тип беззнаковых целых чисел, имеет разряд, больше или равный разряду типа другого операнда, затем операнд с типом целого числа со знаком преобразовывается в тип операнда с типом беззнаковых целых чисел. Иначе, если тип операнда с типом целого числа со знаком может представить все значения типа операнда с типом беззнаковых целых чисел, то операнд с типом беззнаковых целых чисел преобразовывается в тип операнда с типом целого числа со знаком. Иначе оба операнда преобразовываются в тип беззнаковых целых чисел, соответствующий типу операнда с типом целого числа со знаком.

Чтобы полужирное правило было применено, это, будет казаться, будет подразумевать, что Вы должны иметь, имеют тип беззнаковых целых чисел, кто разряд, меньше, чем тип целого числа со знаком и тип целого числа со знаком не могут содержать все значения типа беззнаковых целых чисел.

Существует ли пример реального мира такого случая, или этот оператор служит вместилищем для покрытия всех возможных перестановок?

5
задан Benjamin 18 June 2014 в 10:46
поделиться

1 ответ

Если у вас есть платформа, где sizeof (long int) == sizeof (int) , тогда подписано long int и unsigned int подпадут под это правило. В любом случае стандарт не требует, чтобы ранг конверсии был эквивалентен размеру, только этот ранг конверсии обеспечивает правильное упорядочение по размеру (6.3.1.1.p1.1 (sp?)):

Нет двух целочисленные типы со знаком должны иметь одинаковый ранг, даже если они имеют одинаковое представление .

5
ответ дан 14 December 2019 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: