История изменений
Исправление Vic, (текущая версия) :
В Си переполнение signed типа указано как UB, а у машины - даёт конкретный результат.
Правильно, причем стопроцентный и одинаковый результат на практически любой машине (арифметика одна на всех и результат ее работы, к счастью, одинаков).
UB написали не потому что язык Си, а потому что сначала наплодили кучу компиляторов с разным генератором кода и разным поведением и кучей опций меняющих это поведение как явно так и неявно, а потом только это решили поместить стандарт и … очевидно, не договорились/забили и «подложили себе бумажку» в виде UB что бы не докапывались (сорян, но подлинной истории не знаю, я вообще за однообразие, но против стандартов).
Исправление Vic, :
В Си переполнение signed типа указано как UB, а у машины - даёт конкретный результат.
Правильно, причем стопроцентный и одинаковый результат на практически любой машине (арифметика одна на всех и результат ее работы, к счастью, одинаков).
UB написали не потому что язык Си, а потому что сначала наплодили кучу компиляторов с разным генератором кода и разным поведением и кучей опций меняющих это поведение как явно так и неявно, а потом только это решили поместить стандарт и … очевидно, не договорились/забили и «подложили себе бумажку» в виде UB что бы не докапывались.
Исходная версия Vic, :
В Си переполнение signed типа указано как UB, а у машины - даёт конкретный результат.
Правильно, причем стопроцентный и одинаковый результат на практически любой машине (арифметика одна на всех и результат ее работы, к счастью, одинаков).
UB написали не потому что язык Си, а потому что сначала наплодили кучу компиляторов с разным генератором кода и разным поведением и кучей опций меняющих это поведение как явно так и неявно, а потом только это решили поместить стандарт и … очевидно, не договорились/забили.