代码是这样的:
short x=30;
short y=32760,z;
z= x+y;
int w= z*z;
cout<< " w = "<< w << " z= " << z;
,输出是这样的: w = 1072300516 z = -32746
答案 0 :(得分:1)
short
可容纳的最大金额为32767.当您添加32760和30时,您将获得32790,这大于short
可以容纳的金额。所以发生溢出并且你的数字“包裹”了。这就是你得到z的负数的原因。
–32768 --- 0 --- 32767
如果您以这种方式考虑short
,您就会理解它。当数字太大时,它会再次走向负面。
答案 1 :(得分:0)
z= x+y; <<<<< 32790 is beyond the grasp of short
当你越过短线所能达到的最大值时,这会导致溢出。