2017-03-06 118 views
2
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.for loop condition issue

我做错了什么?环路内

+1

您不需要,但是您需要更新'c'的值 – Sayse

+1

您始终打印变量c,并且您永远不会更改c。所以输出结果是14时间的价值c @ – Steve

+0

@Meriç这个问题并不愚蠢。你问了一个有效的问题:“我必须根据我的初始化变量来定义我的状态吗?”。你只是没有设法以循环方式编程你的循环。 –

回答

1

如果你真的想你可以省略所有三个部分的for循环,因此实质上成为一个while(true)循环

for(;;) 

所以不,它不需要。

但是,为了使你的程序工作,你需要更新循环

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

举动C更改,否则你会itereate没有结束:

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

做我有这取决于我的初始化变量我的条件来定义内部c的值?

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

我做错了什么?

你从来没有这么做过这个条件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()); 
} 

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

0

内部条件:当,Ç变为14

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

循环将停止。

+0

当循环停止时,这会完全改变 – Sayse

+0

@Sayse,Edited答案,现在它会给出所需的输出 – Vikrant

+0

它只给出'c'的当前方程的所需答案,我不会称之为可靠的。 – Sayse