1

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
4

6 に答える 6

7

y = x++ <= 5; ==> y = (x++ <= 5); ==> まず と比較xして、 が小さいか等しい5かどうかを確認します。の結果は、に割り当てられます、x5(x++ <= 5)10y

x>5(x++ <= 5)なると0、そうにy = 0なり、条件falseとループが壊れ、

于 2013-07-22T05:05:09.607 に答える
1

変数を初期化します。

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。次に、印刷xyて出力します。次に、インクリメントの部分が実行されるx++ <= 5かどうか。結果は に割り当てられyます。あなたの条件が偽になるまでそうしますy== false

注:適切なプログラミングのために、中かっこで体を囲む必要があります。

于 2013-07-22T05:08:13.883 に答える
1

基本的に、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);
于 2013-07-22T05:12:44.710 に答える
1

y = x++ <= 5;にはy、条件によって出力される値が格納されますx++ <= 5(ここでx++はポスト インクリメント)。条件が true の場合、y = 1else y = 0.

for( ; y ; printf("%d %d\n",x,y))

for ループでは、for ループ本体の実行後の値をx出力しています。y

于 2013-07-22T05:13:18.357 に答える
0

これに似ている

   int x = 1;
   for( int y = 1; y!=0 ; )
   {
       if (x++ <= 5)
       {
          y = 1;
       } 
       else
       {
          y = 0;
       }
       printf("%d %d\n",x,y);
   }
于 2013-07-22T05:13:13.183 に答える
0

おそらく、このわずかに変換された (ただし機能的には同等の) コードが役立ちます。

int x = 1;
int y = 1;
while (y) {
   y = (x <= 5);
   x = x + 1;
   printf("%d %d\n", x, y)
}
于 2013-07-22T05:14:19.750 に答える