ここに私のコードと出力のスニペットがあります。大きな正の数を掛けたときに、否定的な結果をもたらす理由を示唆していますか?大きな正の数を掛けるとき、結果はなぜ負であるのですか?
int printM(int v)
{
int g=v+5;
g=g*3344564*452346;
printf("The value of g is %d\n",g);
return g;
}
int main()
{
int f=0;
int a=45;
a=a+334;
a=a+534534;
a=a+939;
a=a+45345654645;
f=printM(a);
return 0;
}
出力:あなたはint
をオーバーフローするときに終わる何
[email protected]:~/Desktop/c_d$ gcc -g linked_list.c
[email protected]:~/Desktop/c_d$ ./a.out
The value of g is -377042000
`
'signed int'の範囲は何ですか?.... – LPs
整数オーバーフロー(符号付き整数では未定義の動作です)。良い本を掴んで、それを読んで勉強を始めるかもしれません。 SOのどこかには良い本のリストがあります。 –
たとえ私が署名したとしても、結果は同じ –