私はこのループを10から0に設定した値から減少させたいと思います。なぜそれは永遠に続くのですか?forループは永遠に続きます
int lengthString = 10;
for (int j = lengthString; lengthString > 0; j--)
{
cout << j;
}
私はこのループを10から0に設定した値から減少させたいと思います。なぜそれは永遠に続くのですか?forループは永遠に続きます
int lengthString = 10;
for (int j = lengthString; lengthString > 0; j--)
{
cout << j;
}
for (int j = lengthString; j > 0; j--)
lengthString
への変更は、あなたのループ内で変更されません。
j
がが負の数にを初期化している場合、ループは「永遠に」実行されますので、また、あなたは、あなたがint
としてj
を宣言した場合lengthString
は(あなたの本当のコードで)0以上であることを確認したい場合があります(オーバーフローして再び0になるまで)。
WOW !!!私はそれを完全に逃したと信じていない!!!!!!! – mystycs
あなたが唯一のJをデクリメントされますが、ループ条件はあなたが終了条件がlengthString > 0
でいる、とlengthStringはあなたがちょうどwhile(10 > 0)
を言っているループしているでは変更されませんので、J
を使用していません、永遠に真実です。
私はあなたが意味するものと信じて:
for (int j = lengthString; j > 0; j--)
それはlengthstringない、あなたがより大きいにチェックされているJでなければなりません。 lengthStringがために> 0
int lengthString = 10;
for (int j = lengthString; j > 0; j--)
{
cout << j;
}
あなたのループがj、およびチェックをデクリメント(; J> = 0; int型J = lengthString j--)
もう一度ご覧ください。我慢して。力を使います。思う。 –
ハハハハ!それはすばらしい答えです。 – mystycs
Kerrekのコメントは、より良いプログラマになるための最善の策です。あなたが定期的にこのようなことに立ち往生し、自分でそれを見つけることを学ばなければ、あなたは本当に複雑なものに困っているでしょう。 – Almo