将while循环转换为for循环会导致无限循环

时间:2015-11-12 20:31:10

标签: c++ loops

我已经将while循环转换为for循环。我遇到的问题是while循环按预期工作,但是在编译时for循环会导致无限循环。任何帮助都会很棒!

int y1 = 1776;
int y2 = 2008;

while(y1 <= y2){
    ++ y1;
    if( (y1%400==0 || y1%100!=0) &&(y1%4==0))
        cout << y1 <<" "<< "Is a Leap Year" << " ";
}
cout <<"Now with a for loop" << endl;

for(y1 <= y2; ++ y1;)
{
    if( (y1%400==0 || y1%100!=0) &&(y1%4==0))
        cout << y1;
}

4 个答案:

答案 0 :(得分:3)

你很亲密,但是:

for(y1 <= y2; ++ y1;)
                   ^

应该是:

for(;y1 <= y2; ++ y1)
    ^

请注意,因为你正在跳过任何初始化,即通常的int i = 0,所以你应该确保它是第一个空的,而不是最后一个,因为for循环的结构如下:

for(initialize stuff here; boolean here; iterator here)

答案 1 :(得分:1)

int y1 = 1776;
int y2 = 2008;

for(;y1 <= y2; ++y1)
{
    if( (y1%400==0 || y1%100!=0) &&(y1%4==0))
        cout << y1;

}

由于y1已经有值,您可以将for循环的初始化保留为空。

答案 2 :(得分:0)

你的循环还没有完成。它应该看起来像:

for (int y1 = 0; y1 <= y2; y1++)

答案 3 :(得分:-1)

请花些时间进行快速谷歌搜索,以查看for循环的正确语法。这是:http://www.cplusplus.com/doc/tutorial/control/