中級 › int型の最大値に1を足すと最小値(負の数)に折り返る › パターン3
int型の最大値に1を足すと最小値(負の数)に折り返る
INT_MAXに1を足すと、多くの環境ではINT_MINまで折り返り、突然大きな正の数が大きな負の数に変わります。
1 #include <limits.h> 2 #include <stdio.h> 3 4 int main(void) { 5 int stock = INT_MAX; 6 long updated = (____________)stock + 100; ^ 7 printf("%ld\n", updated); 8 return 0; 9 }
出力: -2147483549期待: 2147483747
空欄を埋めてコンパイル・実行を通す
在庫数や合計値を数える変数の型が小さすぎると、長時間動作するプログラムで突然この種のオーバーフローが発生します。
次の問題