Во-первых, в выдержке из стандарта C отсутствуют два важных слова, которые нужно прочитать в нем
- В противном случае, если новый тип является беззнаковым, значение преобразуется [, как если бы ], путем многократного добавления или вычитания на единицу больше максимального значения, которое может быть представлено в новом типе, пока значение не будет в ассортимент нового типа.
т.е. весь пул говорит о том, как абстрактная машина будет делать вычисления. В действительности ни одна система не будет использовать повторяющиеся сложения / вычитания, чтобы уменьшить значение в диапазоне.
еще одну часть можно только понимать как значение, которое не , представимое в беззнаковом типе, в противном случае оно не будет еще один , то есть >
. Формулировку можно сопоставить с + 1
, что является неоднозначным.
Другой способ выражения преобразования состоит в том, что результатом является положительный остаток деления результата на единицу больше, чем максимально представимое значение.