以下是我的代码和输出的片段。当大的正数乘以时,建议负面结果背后的原因?
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;
}
输出:
pravesh@pravesh-Aspire-4552:~/Desktop/c_d$ gcc -g linked_list.c
pravesh@pravesh-Aspire-4552:~/Desktop/c_d$ ./a.out
The value of g is -377042000
`
答案 0 :(得分:1)
当溢出int
时,您最终得到的是未定义的行为。 INT_MAX
被定义为int
在您的平台上可以代表的最大值。
请注意,溢出unsigned
的定义很明确:它以模UINT_MAX + 1
换行。
(对于它的价值,在您的案例中发生的可能的事情是int
正在以与它完全相同的方式包围如果内存被解释为unsigned
)。