次の質問に出くわしました:
次の for ループは何回実行されますか?
for(;0;)
printf("hello");
私は実行し、それは 1 回実行されます。私はどのように理解することができませんか?
これは1回でも実行されません。私はあなたが悪いコンパイラを持っていると思いますか?
Ok。TurboCを使用していると思います;-)
編集:
C99標準から:
6.8.5.3forステートメント1ステートメント
for ( clause-1 ; expression-2 ; expression-3 )
ステートメントは次のように動作します。式-2は、ループ本体の各実行の前に評価される制御式です。式3は、ループ本体を実行するたびにvoid式として評価されます。句1が宣言である場合、それが宣言する変数のスコープは、宣言の残りの部分と、他の2つの式を含むループ全体です。制御式の最初の評価の前に、実行順に到達します。節-1が式の場合、制御式の最初の評価の前に無効式として評価されます。134)
ループを実行する前に、条件が最初に評価されることを明確に示しています。標準に準拠するコンパイラは、ループを一度も実行しないでくださいfor(;0;) {}
。
ここでコピーしたコードが実際には.cファイルにあるものではないか、バグのあるコンパイラがあります。
セミコロンが追加されている可能性がありますか?:for(;0;); printf("!");
1回印刷されます。
for ループは次のように定義されます。
for(startExpression; testExpression; countExpression)
{
block of code;
}
デコード:
for(;0;)
意味
正しいループ デコードを表示するように編集されました。
上記のコードは、forループに入ることがありません。
ideoneリンクのコードを確認してください。
私はこれがあなたのソースコードにあるものではないので、おそらく次のように気付かずに;
後を入力しました:for
for(;0;);
printf("hello");
その場合、プログラムは「hello」を出力します。
式が 0 であるため、false と見なされます。したがって、この場合、ループは 0 回実行されます。