vak: (Default)
[personal profile] vak
Сложить два целых числа, вернуть целое. Породить исключение в случае арифметического переполнения.
int add(int a, int b);
Удивительно, сколько народу обламывается на этой задачке.

Date: 2020-08-02 22:49 (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9
clang++ с ключом -fsanitize=signed-integer-overflow молчит, с ключом -S выдаёт ассемблерную инструкцию addl %edi, %eax которая работает одинаково что с int, что с unsigned.

Поскольку компилятора стандарта C++ нет, это мне напоминает историю с фальшивой банкнотой. Если никто её не может отличить от настоящей, значит её можно считать настоящей.