2016-10-14 5 views
-20

forループは変数をインクリメントし、条件がfalseになるまで変数を継続して実行します。 これはforループの正しい代替ですか?これは正しい代替私の質問があるこれはforループの正しい代替ですか?

abc : i++; 
if(i<=10) 
{  
    goto abc; 
} 

ですか?そうでない場合は、forループは実際にどのように機能しますか?

+11

番に相当し、 'goto'無条件であるから。 – Carcigenicate

+6

なぜあなたは_alternative_をforループにしますか? –

+3

後藤はしばしば[有害であるとみなされます](http://www.u.ar.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html)。 –

答えて

2

に低下させることができます。あなただけの

}

forループがコンパイルされると、アセンブラはのためのアセンブリコードを生成するのgotoのようなステートメントを使用しています

int i=0; 
abc: i++; 
if(i<10){ 
    printf("i is %d\n", i); 
    goto abc; 

など、初期化、条件、反復回数などのすべての部分の世話をする必要がありますループ(for、while)ただし、コードの可読性が低く、また場合によっては有害である可能性があるため、 gotoを使用することはお勧めしません。だから、私たちはそれを使うべきではありません。

7

forループは、以下のコードは、forループの代替とすることができる

for(int x = 10; x > 0; x--) { 
    cout << x << endl; 
} 

から

{ 
    int x = 10; 
    loop: // for doesn't introduce a label 
    if(x > 0) { 
     { 
      cout << x << endl; 
     } 
     x--; 
     goto loop; 
    } 
} 
1

UAH ... gotoは依然として有害であると考えられています。そして私はそれが変わることを期待していません。

あなたは、whileループとforループを置き換えることができます。

for(int i = 0; i < 42; i++) { /* ... */ } 

はあなたのバージョンが停止することはありません

{ 
    int i = 0; 
    while(i < 42) { 
     /* ... */ 
     i++ 
    } 
} 
関連する問題