-2147483648 - это наименьшее целое число для целочисленного типа с 32 битами, но кажется, что оно будет переполняться в предложении if(...)
:
if (-2147483648 > 0)
std::cout << "true";
else
std::cout << "false";
В моем тестировании будет напечатано true
. Однако, если мы нажмем -2147483648 на целое число, результат будет другим:
if (int(-2147483648) > 0)
std::cout << "true";
else
std::cout << "false";
Откроется false
.
Я в замешательстве. Может ли кто-нибудь дать объяснение по этому поводу?
Обновление 02-05-2012:
Спасибо за ваши комментарии, в моем компиляторе размер int составляет 4 байта. Я использую VC для простого тестирования. Я изменил описание в своем вопросе.
В этом сообщении очень много ответов, AndreyT дал очень подробное объяснение того, как компилятор будет вести себя на таком входе и как это минимальное целое реализованы. qPCR4vir, с другой стороны, дал некоторые связанные "любопытства" и как целое число представлено. Настолько впечатляет!