Почему переполнение беззнакового целого числа определяет поведение, а переполнение знакового целого числа — нет?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему переполнение беззнакового целого числа определяет поведение, а переполнение знакового целого числа — нет?

Сообщение Anonymous »

Переполнение беззнакового целого числа четко определено стандартами C и C++. Например, стандарт C99 (

Код: Выделить всё

§6.2.5/9
) утверждает


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


Однако оба стандарты утверждают, что переполнение знакового целого числа является неопределенным поведением. Опять же из стандарта С99 (

Код: Выделить всё

§3.4.3/1
)


Примером неопределенного поведения является поведение при переполнении целых чисел


Есть ли историческая или (еще лучше!) техническая причина такого несоответствия?

Подробнее здесь: https://stackoverflow.com/questions/181 ... verflow-is
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»