C++for循环次数上限是多少?

我变了一个c++程序,其中for循环次数似乎不能超过1.67*10^7.,超过这个数字循环内的语句就不会被执行了。当循环次数是1.677*10^7的时候循环很快就执行完毕,得到正确的结果,可是当循环次数增大到1.68*10^7的时候好像程序就陷入死循环了,始终挑不出来。这究竟是怎么回事呢?是不是真的有上限?
本人的计算机是今天才配的,i7 950,6G内存,win7 64为操作系统。应该是目前顶级配置,会不会是这样的配置VC反而不认?

#include<iostream.h>
void main(){
int a=168000000;
for(int i=0;i<a;++i){
}
cout<<a;
return;
}
执行以上代码得到结果168000000。这证明了3楼不对,你那个32767什么的不现实。
从没听说过for有上限,上限什么的为什么C++要这样设语法?
至于问题就和你的电脑还有编译器有关,电脑的计算能力不可能那么差,所以不是计算机硬件,一般是编译器设的上限。你的循环里装的东西肯定比我上面的代码多,循环太多干扰到编译器运行了。我用的编译器是 vc6.0,我在用的时候存在好多问题,编译器也是别人编的软件,不完善也正常。
追究到底哪里的毛病也没太大用,你知道for没上限就对了,这种小问题就直接略过吧。

。。。。。。。
据我所知,vc6.0和win7不是很兼容,有时也出一些根本没法解决的问题。不知道你用的是不是vc6.0,我知道的是,vc这么老的软件,甚至有些地方还不符合语法。例如for循环里定义的第一个参数,语法里是只在for的大括号范围内有效(vc2008就是这样),但是vc6.0则在for外面也有效。这是语法不断发展的结果。话说回来就算是vc2008也未必兼容64位的最新系统吧。
所以总之,这些问题应该是软件方面的吧,本身编译器也不是十分完善的。
管他兼容与否,大体能用就行了吧,你是来问语法的就不要管这些小问题了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-15
for循环应该没有上限,for(;1;)等价于while(1)是无限循环,你说的那个可能是参数的上限,比如说int i=0;i++;当i到了32767之后再加1就会变成最小的-32766了。这样就形成了死循环。 至于int型变量的取值范围,因编译器的不同而不同。
第2个回答  2010-11-15
估计是你这样循环的:for(int i=0; i <N;i++)
int为4字节,其取值范围是 - 2^31 ~ 2^31 - 1
估计是其循环次数超出了 2^31 - 1,所以会出现你上述情况
2^31 就是1.67710^7级别

你可以把i定义成64位, 如int64 i;这样取值范围可达2^63
第3个回答  推荐于2017-09-15
没次数限制的,但是循环次数过多会影响速度.
比如:
for (int i = 1; i <= x ; i++) {
x *= i;
}
这样的写法怎样都会溢出,改正:
long result = 1;
for (int i = 1; i <= steps ; i++) { //steps 为阶数
result *= i;
}
第4个回答  2010-11-10
你的循环控制变量是什么类型的?要int,就不可能出错,再烂的电脑在一秒钟内都能看到结果!看看是不是发生溢出错误了!

for循环一共能循环多少次呢?
for循环的次数,要看表达式的设置模式,变量初始赋值和条件表达式、末尾循环体的设置都影响执行次数。1、举例:for(i=1,i<5,i++){……}。这里面的变量i赋值1,则从1开始,i<5,当i=1、2、3、4的时候都是符合条件表达式的,当i=5之后,就不符合条件表达式条件,就会退出循环体。这样的话,就...

c++的一个简单问题。这个程序为会循环100次呢,能帮我具体的说一下吗...
总共循环了10*10*10=1000次

求教,c++中for语句嵌套有没有上限??
for是没有上限的,比如 一个无限循环:for(;;);是要你不关闭进程,就会一直运行下去

[c++]循环几次?
for(i=0,j=5;i=3;i++,j--)带着i=0,j=5初始值进入循环先判断i=3是否成立,不成立直接退出循环,但这里i=3是赋值语句,所以此循环是死循环;for(i=1;i++<4;)每次判断后不管是否成立i都会+1,所以当i=4不成立,但i仍然会+1,所以i=5(你的答案有误吧,我如图做了测试);while(...

C++for语句里的循环条件可不可以是两个以上的条件?
可是可以,但是你要把它变成一个true or false语句 比如 int i,j;for(i=0,j=0;i<100&&j<500;i++,j+=5){ ...} 第一个分号前是初始化执行语句,中间的是结束循环的条件,最后的语句的每次循环执行的语句 中间的条件是i<100或者j<500任意一个如果是假,则结束循环。

c++ for()的循环次数是怎么计算的?
于是就退出循环。for循环中间的1永远为真,所以这是个死循环(除非当i满足某个条件,用break退出循环),i从0开始,每次循环加一。当i=0;判断i<10,i++是保留并循环累计。当i=9<10,9被保留,当i=10,判断i<10错误,前面都过不了,i++没发生,所以既不保留10也不再循环。i=9是最后的值。

c++,for(;;)中循环条件是赋值语句是什么情况?如for(;i=5;i=i+1...
判断语句是用来判断真假的,也就是说语句的值其实是0,1。i=5的话相当于是真。比如有 for(i=0,j=5;i=j;j--)就会执行五次。因为五次循环后j的值为0,赋值给i后进行判断,导致语句为0(其实就是i为0),即假,结束,退出。

C++for函数的问题,for(e=0, ip=m; e<3; e++, ip+=3),m是确定的值,这个...
只是一层循环。一个for只能是一个循环,不过循环一次执行两个条件:e++,ip=ip+3;而已。for(表达式1;表达式2;表达式3) 语句 for语句的执行过程:(1) 先求解表达式1。 (2) 求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下 面第(3)步。若为假(值为0),则...

...i=0;i<=5&&i;i++) cout<<i<<endl;执行循环次数为?求分析
5次,从0~5共6个数,但是判断条件有一个不等于0的条件,因此实际的执行次数为i=1~5,共5次。

c++中的for循环矩阵问题
嵌套循环就是外层循环进行一次内层循环循环一圈。例如两层的嵌套 for(i=1;j<=5;i++) for(j=1,j<=5;j++,n++) 意思就是i=1的时候 j从1到5循环一遍,i=2的时候,j从1到5循环一遍,i=3的时候j从1到5循环一遍,这样一直到最外层的循环 结束为止。

相似回答