0

次のコード スニペットがあり、取得している出力は 4 です。i=2 か 0 かを説明してください。混乱しています。そして、どのように出力されましたか 4?

int main() {  
   int i=2;
   for(i=0;i<2;i++) {
      i=i%3;
      if(i==2) {
          i++;
          continue; }
      else
          ++i;  
   }
   printf("%d",i); 
}
4

2 に答える 2

6

でループが始まります i = 0ifと はまったくelse同じものです。増分iして続行します。
少しのロジックを使用すると、ブロック全体をi++(i = i % 3以来効果がありませんi < 2) に減らすことができます。

4あなたが投稿したコードで取得することはできません。

于 2011-10-16T08:13:14.073 に答える
0

4ループが壊れるまでに、 の値は ではなく、ループは 1 回だけ実行されるため、投稿したプログラムi2出力4出力することはできません。

また、ループが終了するまでにループ内で条件が真になることは決してないため、コードがifブロックに入ることはありません。i==2for

したがって、あなたのコードはこれと同等です:

int main() {  
   int i=2;
   for(i=0;i<2;i++) {
      i++;
   }
   printf("%d",i); 
}
于 2011-10-16T08:17:08.063 に答える