2011-12-16 14 views
-4

私はこのループを10から0に設定した値から減少させたいと思います。なぜそれは永遠に続くのですか?forループは永遠に続きます

int lengthString = 10; 

for (int j = lengthString; lengthString > 0; j--) 
{ 
    cout << j; 
} 
+18

もう一度ご覧ください。我慢して。力を使います。思う。 –

+0

ハハハハ!それはすばらしい答えです。 – mystycs

+8

Kerrekのコメントは、より良いプログラマになるための最善の策です。あなたが定期的にこのようなことに立ち往生し、自分でそれを見つけることを学ばなければ、あなたは本当に複雑なものに困っているでしょう。 – Almo

答えて

9

for (int j = lengthString; j > 0; j--) 

lengthStringへの変更は、あなたのループ内で変更されません。

jが負の数にを初期化している場合、ループは「永遠に」実行されますので、また、あなたは、あなたがintとしてjを宣言した場合lengthStringは(あなたの本当のコードで)0以上であることを確認したい場合があります(オーバーフローして再び0になるまで)。

+1

WOW !!!私はそれを完全に逃したと信じていない!!!!!!! – mystycs

0

あなたが唯一のJをデクリメントされますが、ループ条件はあなたが終了条件がlengthString > 0でいる、とlengthStringはあなたがちょうどwhile(10 > 0)を言っているループしているでは変更されませんので、J

2

を使用していません、永遠に真実です。

私はあなたが意味するものと信じて:

for (int j = lengthString; j > 0; j--) 
0

それはlengthstringない、あなたがより大きいにチェックされているJでなければなりません。 lengthStringがために> 0

int lengthString = 10; 

for (int j = lengthString; j > 0; j--) 
{ 
    cout << j; 
} 
1

あなたのループがj、およびチェックをデクリメント(; J> = 0; int型J = lengthString j--)

2

ある場合

for (int j = lengthString; j > 0; j--) 
+0

彼の質問は10から0の出力を意味するので、>の代わりに>を示します。 – Scott

0

はこの1つを試してみてください:

for (int lengthString = 10, *j = &lengthString; lengthString > 0; lengthString--) 
{ 
    cout << *j; 
} 
+0

-1 hm ...なぜですか? :) – debleek63

+0

Holy Obfuscated Code、Batman! – Almo

関連する問題