中級 › int型の最大値に1を足すと最小値(負の数)に折り返る › パターン5
int型の最大値に1を足すと最小値(負の数)に折り返る
INT_MAXに1を足すと、多くの環境ではINT_MINまで折り返り、突然大きな正の数が大きな負の数に変わります。
1 #include <limits.h> 2 #include <stdio.h> 3 4 int main(void) { 5 int base = INT_MAX - 2; 6 long sum = (____________)base + 10; ^ 7 printf("%ld\n", sum); 8 return 0; 9 }
出力: -2147483641期待: 2147483655
空欄を埋めてコンパイル・実行を通す
baseがINT_MAXに近い値の場合、少し足しただけでも簡単にオーバーフローします。
次の問題