История изменений
Исправление vodz, (текущая версия) :
Как уже писали выше: переполнение знакового — это UB. А UB — это ни-ни
UB там идёт от UB реализации в самой архитектуре — не известно, как любая архитектура среагирует на переполнение: то ли будет недопустимая операция, то ли будет сложение то ли нет, то ли будет отрицательное значение, то ли вообще неизвестно что. Для конкретной архитектуры та же strtol() вполне справляется с переполнением: сравнивается с безнаковым и MAX_INT, запоминая знак и работая предварительно с положительным значением.
Исходная версия vodz, :
Как уже писали выше: переполнение знакового — это UB. А UB — это ни-ни
UB там идёт от UB реализации в самой архитектуре — не известно, что любая архитектура среагирует на переполнение: то ли будет недопустима операция, то ли будет сложение то ли нет, то ли будет отрицательное значение, то ли вообще неизвестно что. Для конкретной архитектуры та же strtol() вполне справляется с переполнением: сравнивается с безнаковым и MAX_INT, запоминая знак и работая предварительно с положительным значением.