История изменений
Исправление Iron_Bug, (текущая версия) :
нашла: у gcc есть опция -fwrapv, которая отменяет оптимизацию без учёта переполнения. если её добавить, всё будет работать нормально, с любым -Ox.
на самом деле, достаточно даже такого кода:
int a = 0x77359400;
int b = 0x77359400;
int c = a+b;
printf("%d\t%d\t%d\t%d\n", a+b, a, a+b<a, c<a);
но ситуация спорная, потому что переполнение - это, по идее, тоже ошибка. в рабочем софте его лучше не использовать.
Исходная версия Iron_Bug, :
нашла: у gcc есть опция -fwrapv, которая отменяет оптимизацию без учёта переполнения.
но ситуация спорная, потому что переполнение - это, по идее, тоже ошибка. в рабочем софте его лучше не использовать.