中級 › int型の最大値に1を足すと最小値(負の数)に折り返る › パターン4
int型の最大値に1を足すと最小値(負の数)に折り返る
INT_MAXに1を足すと、多くの環境ではINT_MINまで折り返り、突然大きな正の数が大きな負の数に変わります。
1 #include <limits.h> 2 #include <stdio.h> 3 4 int main(void) { 5 int n = INT_MAX; 6 long r = (____________)n + 5; ^ 7 printf("%ld\n", r); 8 return 0; 9 }
出力: -2147483644期待: 2147483652
空欄を埋めてコンパイル・実行を通す
intのままだと加算もint型で行われ、INT_MAXを超えた瞬間に折り返ります。longにキャストしてから足す必要があります。
次の問題