9

「for(;;)」には初期条件、テスト条件、増分条件がないため、永久にループすることを理解しているので、なぜテスト条件が各ループに成功するのか不思議です。

空の式「;」を実行します Cでtrueと評価しますか?それとも、これはコンパイラによって処理される特殊なケースですか?

同様ですが、無関係な質問です。

4

2 に答える 2

17

forこれは、C言語でのステートメントの定義によるものです。6.8.5.3 / 2「forステートメント」:

句1と式3の両方を省略できます。 省略された式-2は、ゼロ以外の定数に置き換えられます。

于 2010-01-31T06:06:54.603 に答える
5

C言語には「空の表現」というものはありません。ステートメントに式が欠落している場合for、構文的には、式全体が省略されていることを意味します。式が存在しているのではなく、空であることを意味します。

ステートメントの仕様にそのように記載されているため、2番目の式が省略されたforループは永久にループします。つまり、これは単独にfor固有の専用機能であり、より一般的なものではありません。for

さらに(用語のニッチ)2番目の式だけが実際には条件です。1番目と3番目は実際には「条件」ではありません。

于 2010-01-31T06:16:11.913 に答える