-1

これが何を意味するのかを知るために、インターネット全体を検索しました。

while(i++)

これに似たコードをたくさん見てきました。while ループの状態にインクリメントは何を返しますか?

4

5 に答える 5

1

コンストラクトi++は 2 つのことを行います。変数 の現在の値を評価しi、格納されている値を 1 増やします。したがって、iが に等しい-1場合、 の場合、 はwhile(i++)i++評価され-1、これは (非ゼロである) 真であり、 にインクリメントiされ0、ループ本体が実行され、次の反復でi++ゼロに評価されて にインクリメントiされ1、ゼロは にインクリメントされます。 false の場合、while終了し、それを超えて実行が続行されます。

于 2013-07-25T04:42:32.620 に答える
1

インクリメントはwhileループ条件に何も返しません。変数の値iは最初に真であることがチェックされ、次にインクリメントされます。

true は、 と等しくないものを意味し0ます。

于 2013-07-25T04:42:56.517 に答える
1

ではwhile( i++ )、 の値が のi条件として評価されwhile、その後iが増分され1ます。これはCではポスト インクリメントと呼ばれ、副作用があります。

例、

i = 1;
while( i++ )    // same as while( i ), 
                // side-effect is `i` incremented by 1 after this 
                // now i is 2

インクリメント演算子の詳細については、この質問を参照してください。

于 2013-07-25T04:47:32.870 に答える
1

このコードを試すことができます:

  #include"stdio.h"                                                                                                                                                          

  int main()
  {
      int i = -3;
      while(i++)
          printf("NUM I IS: %d\n",i);
      i = -3;
      printf("\n");
      while(++i)
         printf("NUM I IS: %d\n",i);
      return 0;
  }

結果は次のとおりです。

NUM I IS: -2
NUM I IS: -1
NUM I IS: 0

NUM I IS: -2
NUM I IS: -1

2 番目のループは 2 回だけ実行されますが、最初のループは 3 回実行されます。

そう

while(i++) 

==>

while(i)
{
    i = i +1;
    ...
}

while(++i)

==>

while( i = i+1)
于 2013-07-25T04:48:21.420 に答える
0

WHILEloop は と の 2 つだけを理解TRUEFALSEます。

TRUE= 0 以外の任意の値

FALSE=0

条件が true の場合、ループはそれ以外の場合に実行され、終了します。

あなたの場合、あなたWHILE(i++)は i の値をインクリメントし続けることを意味し、取得するまでループが続くと言います0

例:

i= -2;
WHILE(i++)
{
condition
}

最初のループでは、i の値-2は true になります。条件が実行され、i がインクリメントされます。したがって、i の値は次のようになります。-2+1 = -1

2 番目のループでは、i の値-1は true になります。条件が実行され、i がインクリメントされます。したがって、i の値は次のようになります。-1+1 = 0

3 番目のループでは、i の値0は false になります。したがって、ループは終了します。

于 2013-07-25T05:02:28.723 に答える