2017-03-06 6 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になると思います。ループ条件発行用

私は間違って何をしていますか?ループの内側

+1

「c」の値を更新する必要があります – Sayse

+1

常に変数cを表示していて、変更しないでください。c。したがって出力は14時間の値です。 – Steve

+0

@Meriç質問はダムではありません。あなたは有効な質問をしました: "自分の状態を変数の初期化に応じて定義する必要がありますか?"ループをプログラム的に管理することはできませんでした。 –

答えて

1

あなたは本当にあなたがループのためのすべての3つの部分を省略することができたい場合、それは本質的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; 
    } 
} 

EDIT

を使用してループを書くことができますfor-loopで動作します:

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

免責事項:読みにくく、恐ろしいので、お勧めしません。

0

条件内部Cが14になったときに、

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

ループは停止します。

+0

これはループが終了するときに完全に変わります – Sayse

+0

@Sayse、Edited答えは、現在望ましい出力を与えるでしょう – Vikrant

+0

それは 'c'のための現在の式のための望ましい答えを与えるだけです、私はそれを信頼できると呼ぶつもりはありません。 – Sayse