Przede wszystkim należy pamiętać, że C11 3.4.3, podobnie jak wszystkie przykłady i nuty, nie jest tekstem normatywnym, a zatem nie ma sensu cytować!
Odpowiedni tekst stwierdzający, że przepełnienie liczb całkowitych i liczb zmiennoprzecinkowych jest niezdefiniowanym zachowaniem, jest następujący:
C11 6,5 / 5
Jeśli podczas oceny wyrażenia wystąpi wyjątkowy warunek (to znaczy, jeśli wynik nie jest zdefiniowany matematycznie lub nie mieści się w zakresie reprezentatywnych wartości dla jego typu), zachowanie jest niezdefiniowane.
Wyjaśnienie dotyczące zachowania niepodpisanych typów liczb całkowitych można znaleźć tutaj:
C11 6.2.5 / 9
Zakres nieujemnych wartości podpisanego typu liczby całkowitej jest podzakresem odpowiadającego typu liczby całkowitej bez znaku, a reprezentacja tej samej wartości w każdym typie jest taka sama. Obliczenia obejmujące niepodpisane operandy nigdy nie mogą się przepełnić, ponieważ wynikiem, który nie może być reprezentowany przez wynikowy typ liczb całkowitych bez znaku, jest zmniejszone modulo liczba, która jest o jeden większa od największej wartości, jaką może reprezentować wynikowy typ.
To sprawia, że typy całkowite bez znaku są specjalnym przypadkiem.
Należy również pamiętać, że istnieje wyjątek, jeśli dowolny typ jest konwertowany na typ podpisany, a starej wartości nie można już reprezentować. Zachowanie jest wówczas jedynie definiowane w ramach implementacji, chociaż sygnał może zostać podniesiony.
C11 6.3.1.3
6.3.1.3 Liczba całkowita ze znakiem i bez znaku
Gdy wartość o typie całkowitym jest konwertowana na inny typ liczb całkowitych inny niż _Bool, jeśli wartość może być reprezentowana przez nowy typ, pozostaje niezmieniona.
W przeciwnym razie, jeśli nowy typ nie jest podpisany, wartość jest konwertowana przez wielokrotne dodawanie lub odejmowanie wartości większej niż maksymalna wartość, którą można przedstawić w nowym typie, dopóki wartość nie znajdzie się w zakresie nowego typu.
W przeciwnym razie nowy typ jest podpisany i nie można w nim reprezentować wartości; albo wynik jest zdefiniowany w implementacji, albo podniesiony jest sygnał zdefiniowany w implementacji.