for ループ文とそれに続く式がわかりません。私が理解するのを手伝ってください。
#include<stdio.h>
int main()
{
int x = 1;
int y = 1;
for( ; y ; printf("%d %d\n",x,y))
y = x++ <= 5;
return 0;
}
そして、私が得た出力
2 1
3 1
4 1
5 1
6 1
7 0
for ループ文とそれに続く式がわかりません。私が理解するのを手伝ってください。
#include<stdio.h>
int main()
{
int x = 1;
int y = 1;
for( ; y ; printf("%d %d\n",x,y))
y = x++ <= 5;
return 0;
}
そして、私が得た出力
2 1
3 1
4 1
5 1
6 1
7 0
y = x++ <= 5; ==> y = (x++ <= 5); ==> まず と比較xして、 が小さいか等しい5かどうかを確認します。の結果は、に割り当てられます、x5(x++ <= 5)10y
x>5に(x++ <= 5)なると0、そうにy = 0なり、条件falseとループが壊れ、
変数を初期化します。
int x = 1; int y = 1;
-13のステートメントがあります。for loopInitialize, 2. Condition, 3. Iteration:increment/decrement
あなたの場合、initialize 条件を指定しませんでしたが、条件とインクリメントの部分があります。for ループが正しい方法で使用されているとは思いません。
次のように、増分の部分を体と交換する必要があります。
for(; y; y = x++ <= 5;)
printf("%d %d\n", x, y)
まず、条件が真かどうか、真かどうかを確認しますy。次に、印刷xしyて出力します。次に、インクリメントの部分が実行されるx++ <= 5かどうか。結果は に割り当てられyます。あなたの条件が偽になるまでそうしますy== false。
注:適切なプログラミングのために、中かっこで体を囲む必要があります。
基本的に、for 構文は次のとおりです。 for(StartCondition; Test; PostLoopOperation) DoWhileTestPasses;
この場合:
StartCondition == None
Test == (y != 0)
PostLoopOperation == do some printing
DoWhileTestPasses == set y to zero if x > 5 otherwise to non-zero THEN increment x.
紛らわしいので、これはかなり悪い習慣です。
次のように書くとよいでしょう:
int x=0;
int y=0;
for(y=0; y = (x <= 6); x++)
{
printff("%d %d\n",x,y);
}
return(0);
y = x++ <= 5;にはy、条件によって出力される値が格納されますx++ <= 5(ここでx++はポスト インクリメント)。条件が true の場合、y = 1else y = 0.
for( ; y ; printf("%d %d\n",x,y))
for ループでは、for ループ本体の実行後の値をx出力しています。y
これに似ている
int x = 1;
for( int y = 1; y!=0 ; )
{
if (x++ <= 5)
{
y = 1;
}
else
{
y = 0;
}
printf("%d %d\n",x,y);
}
おそらく、このわずかに変換された (ただし機能的には同等の) コードが役立ちます。
int x = 1;
int y = 1;
while (y) {
y = (x <= 5);
x = x + 1;
printf("%d %d\n", x, y)
}