以下のループでは異常な出力が得られます。コンパイラで実行すると、出力は233445
になります。なぜ私はこのループの出力を下に得ますか? 7
はこのループのための唯一の妥当な出力ですが、printf
ステートメントがループ内にあるときに7
を取得しないのはなぜですか?Cで異常なループ出力を取得する
答えて
はい、printf
ステートメントはループ内にあります。 7
を取得するには、ループの後に{}
を配置してループから取り除きます。
#include <stdio.h>
#include <stdlib.h>
int main() {
int i ;
int j ;
for(i=1; i<4;i++)
for(j=1;j<3;j++)
printf("%d",i+j);
}
コードは、外側ループをi = 1
で3回実行します。それは内部のループに行き、j = 1
で始まる2回実行されます。その後、最初のループには2,3
、2番目のループには3,4
、3番目のループには4,5
が出力されます。
わかりやすくするためにカンマを追加し、内部ループが実際に2回実行されることを示しましたが、セパレータや改行を追加しないため、実際の出力は233445
です。出力は、ループを使用して、あなたが7
たい場合
、試してみてください。
#include <stdio.h>
#include <stdlib.h>
int main() {
int i ;
int j ;
for(i=4; i<5;i++) { // this brace means it contains the inner loop.
for(j=3;j<4;j++) { // this inner brace means it contains control of the statement.
printf("%d",i+j); // and always remember to indent for your readers
} // close the inner brace!
} // close the outer brace!
} // close main brace
を代わりに、他の人が言及したようにあなたは、ループを使って数字をインクリメントしてみてください、その後、ループの外にそれを印刷することができます。
#include <stdio.h>
#include <stdlib.h>
int main() {
int i ;
int j ;
for(i=1; i<4;i++) { // this brace means it contains the inner loop.
for(j=1;j<3;j++) { // this inner brace means it contains control of the statement.
} // close the inner brace!
} // close the outer brace!
printf("%d",i+j); // 7
} // close main brace
2つのループの中かっこを追加すると、OP – babon
@babonのほうが簡単になるでしょう。私はこれを付け加えました。 –
なぜこのループの出力が下に表示されますか?
グラフを作成すると表示されます。 printf
文がループ内にあるとき、私は7
を取得しない理由を
i | j | i+j
--+---+----------------------------
1 | 1 | 2
1 | 2 | 3
1 | 3 | (get out of the inner loop)
2 | 1 | 3
2 | 2 | 4
2 | 3 | (get out of the inner loop)
3 | 1 | 4
3 | 2 | 5
3 | 3 | (get out of the inner loop)
4 | - | (get out of the outer loop)
?
i<4
とj<3
、そうi+j < 4+3
ので、それはそうi+j
は、ループ内7
ではありません、i+j<7
を意味します。
- 1. 異常なgrep出力
- 2. C++のwindows-threadの異常出力
- 3. * argv []を使った異常な出力
- 4. C、PHP、javaで異なる出力
- 5. C++ forループと通常のforループとが異なる
- 6. ループ出力からWebSQLデータを取得
- 7. Python netifacesが異常な出力を出す
- 8. C++、ベクトル:0を含む不正な出力を取得する
- 9. var_dumpによるpreg_replace_callback()の異常出力
- 10. C#のforeachループが正しい出力出力としてキーと値を取得するために探し
- 11. 同じsimplexmlobjectファイルで異なる出力を取得していますか?
- 12. 奇妙な出力を取得する
- 13. 単純なループで配列を出力しているときとは異なる出力を返します。
- 14. C++ RNG:異なるプロセッサで異なるrandジェネレータを取得する方法は?
- 15. 異なる出力
- 16. 標準出力の内容をC#で取得する
- 17. c#でlableにcmdコマンド出力を取得するには
- 18. Cで異なる出力を与える配列?
- 19. Python:異なるループから変数を一緒に出力
- 20. C++とRのインタフェース、出力の取得
- 21. forループを使用してverilogで出力するxxxを取得する
- 22. 異なるコンパイラで異なる出力を生成するコード
- 23. なぜsizeof()演算子はCで異なる出力
- 24. PHPなぜpreg_matchが通常の出力と異なるのですか?
- 25. C#スタンフォードNLPオンラインデモで異なる出力を提供
- 26. Groovyでプロセス出力を取得する
- 27. PowerShellでSystem.Object []出力を取得する
- 28. Flink出力セレクタに異常な動作があります
- 29. 出力異なる列の各ループの結果
- 30. マクロ出力なしでループする
"なぜ' printf'文がループの中に入っているのですか? 'i + 4'と 'j <3'なので、 'i + j <4 + 3 'で' i + j <7'を意味するので、 'i + 。 – MikeCAT
ループの前にiとjの値が1である –