num=num*2;这是个问题(非常有名的棋盘放麦粒问题):
按这个循环for(int i=2;i<=100;i++)计算的结果,是一个很大的天文数字。
num经过计算,早就超过了int的最大值(溢界),表现为正数变成负数(进位进到符号位上)。
因此,你的计算结果就成了负数。
简单的说,num是int类型,范围负3万多到正3万多,你在循环里面反复乘以2,99次,2的99次方早就超过上限了,造成数据溢出,是个很大的负数,加起来就是负数了。
num 是int型的,包括负数,for循环次数已经能导致num溢出,自然就出现了负数
溢出