下面程序为什么是负数?求高手帮忙。。。。

2025年05月06日 16:09
有4个网友回答
网友(1):

num=num*2;这是个问题(非常有名的棋盘放麦粒问题):
按这个循环for(int i=2;i<=100;i++)计算的结果,是一个很大的天文数字。
num经过计算,早就超过了int的最大值(溢界),表现为正数变成负数(进位进到符号位上)。
因此,你的计算结果就成了负数。

网友(2):

简单的说,num是int类型,范围负3万多到正3万多,你在循环里面反复乘以2,99次,2的99次方早就超过上限了,造成数据溢出,是个很大的负数,加起来就是负数了。

网友(3):

num 是int型的,包括负数,for循环次数已经能导致num溢出,自然就出现了负数

网友(4):

溢出