关于VC中的for的疑问,究极菜鸟求高手赐教
#include "iostream.h" int main() { long int sum=1; for (int i=1 ; i<=18 ;i=i+1 ) { sum=sum*i; } cout<<sum<<endl; return 0; } 我用着个计算,发现改变循环次数时,数据出了大,错误当i<=12 到 i<=18得出的数据如图 求高手赐教啊
#include "iostream.h" int main() { long int sum=1; for (int i=1 ; i<=18 ;i=i+1 ) { sum=sum*i; } cout<<sum<<endl; return 0; } 我用着个计算,发现改变循环次数时,数据出了大,错误当i<=12 到 i<=18得出的数据如图 求高手赐教啊
答案:int类型的数据范围在-2^31到2^31-1之间,大约是-21亿到正21亿之间。当循环次数过多的时候int类型的变量发生了溢出导致了你的错误。可以换成unsigned long来试下,不过循环次数照样不能太多。真要有兴趣可以去百度下 “大数乘法”。
其他:累乘的结果超出整数范围,改成累加测试吧 int 溢出了,32位已经不行了,补码的规则你懂得。你用类似于long long int之类的,或者以64位模式编译去吧
上一个:一道VC++选择题,请详细解释每个选项
下一个:什么是VC软件工程师