Прежде всего, обратите внимание, что C11 3.4.3, как и все примеры и сноски, не является нормативным текстом и поэтому не имеет отношения к цитированию!
Соответствующий текст, в котором говорится, что переполнение целых чисел и чисел с плавающей запятой является неопределенным поведением, выглядит следующим образом:
C11 6.5 / 5
Если во время оценки выражения возникает исключительное условие (то есть, если результат не определен математически или не входит в диапазон представимых значений для его типа), поведение не определено.
Разъяснение относительно поведения целочисленных типов без знака, в частности, можно найти здесь:
C11 6.2.5 / 9
Диапазон неотрицательных значений целочисленного типа со знаком является поддиапазоном соответствующего целочисленного типа без знака, и представление одного и того же значения в каждом типе одинаково. Вычисление с участием беззнаковых операндов никогда не может переполниться, потому что результат, который не может быть представлен результирующим целочисленным типом без знака, уменьшается по модулю числа, которое на единицу больше наибольшего значения, которое может быть представлено результирующим типом.
Это делает беззнаковые целочисленные типы особым случаем.
Также обратите внимание, что существует исключение, если какой-либо тип преобразован в подписанный тип и старое значение больше не может быть представлено. Тогда поведение просто определяется реализацией, хотя может быть подан сигнал.
C11 6.3.1.3
6.3.1.3 Целые числа со знаком и без знака
Когда значение с целочисленным типом преобразуется в другой целочисленный тип, отличный от _Bool, если значение может быть представлено новым типом, оно не изменяется.
В противном случае, если новый тип является беззнаковым, значение преобразуется путем многократного добавления или вычитания на единицу большего, чем максимальное значение, которое может быть представлено в новом типе, до тех пор, пока значение не окажется в диапазоне нового типа.
В противном случае новый тип подписывается и значение не может быть в нем представлено; либо результат определяется реализацией, либо возникает сигнал, определяемый реализацией.
person
Lundin
schedule
22.12.2016
if (a + b < a)
). Переполнение при умножении затруднено как для знаковых, так и для беззнаковых типов. - person   schedule 13.08.2013MAX_INT+1 == -0
, в то время как в дополнении до двух это будетINT_MIN
- person David Rodríguez - dribeas   schedule 13.08.2013