int 型は 4 バイトの長さで、入力した数値を出力するために Ubuntu の下で C で小さな手順を書きました。2147483648、つまり 2^31 を入力すると、-1 ではなく 2147483647 が出力されます。2147483647 より大きい任意の数値を入力すると、同じことが起こります。フォーム ブックで学習したように -1 にオーバーフローしないのはなぜですか?
#include <stdio.h>
int main(){
int x;
scanf("%d",&x);
printf("%d\n",x);
}
私はミスを犯した。INT_Max+1 は INT_Min に等しくなければなりません。コードを変更しました:
#include <stdio.h>
int main(){
int x=2147483647;
int y=x+1;
printf("%d",y);
}
-2147483648
関数 scanf を呼び出したときに何が起こったのか疑問に思っています。2147483647 より大きいすべての入力数値を 2147483647 に切り捨てたと思います。