for循环条件问题

时间:2017-03-06 09:51:40

标签: c# .net for-loop conditional-statements

int a, b, c;
a = 1;
b = 2;
c = a + 2*b;
for (a=1; c<15; a++)
{               
    Console.WriteLine(c.ToString());
}

Console.ReadLine();

我有一个简单的问题。我是否必须根据初始化变量来定义条件?
在上面的例子中,我希望循环在变量“a”变为10时停止,因此变量“c”将小于15。 但输出是“5”的无限行。我希望我的输出为14。

我做错了什么?

4 个答案:

答案 0 :(得分:5)

在循环内部移动c更改,或者您将迭代而不结束:

for (a=1; c<15; a++)
{
    c = a + 2*b;
    Console.WriteLine(c.ToString());
}

答案 1 :(得分:1)

如果你真的想要,你可以省略for循环的所有3个部分,所以它基本上变成了while(true)循环

for(;;)

所以不,它不需要。

但为了使你的程序有效,你需要更新循环中c的值

    for (a=1; c<15; a++)
    {
        c = a + 2*b;
        Console.WriteLine(c.ToString());
    }

答案 2 :(得分:1)

  

我必须根据初始化变量来定义我的条件吗?

不,你不能定义你想要的任何条件。

  

我做错了什么?

你永远不会有这样的条件false它会像你的情况一样永远地运行。

您只需在循环开始前更改c一次:

c = a + 2*b;
for (a=1; c<15; a++)
{               
    Console.WriteLine(c.ToString());
}

一旦进入循环,c永远不会再次更改!将更改的部分移动到循环中:

for (a=1; c<15; a++)
{               
    c = a + 2*b;
    Console.WriteLine(c.ToString());
}

您甚至可以使用bool变量

编写循环
bool condition = true;
for (int a = 0; condition; i++)
{
    c = a + 2*b;
    if (c > 15)
    { 
        condition = false;
    }
}

编辑

你甚至可以在for循环的比较块中进行计算,它可以工作:

for (a = 0; (c = a + 2 * b) < 15; a++)
{
    Console.WriteLine(c.ToString());
}

免责声明:我不推荐它,因为阅读它是神秘而可怕的。

答案 3 :(得分:0)

A 内部条件:

for (a=1; a<=10; a++)
{
    c = a + 2*b;
    Console.WriteLine(c.ToString());
}

c 变为14时,循环将停止。