2017-11-29 19 views
-4
main() 
{ 
int i=2,j=0; 
switch(3) 
{ 
case 0: while(i) 
     { 
      case 1:j++; 
      case 2:j++; 
      case 3:j++; 
       i--; 
      } 
} 

} 

//定数ではないので、スイッチがここに 動作するように起こっているかは、どのような場合でも、一定定数が一定でどのような場合には一致していない場合、このコードは

にmathingされていない実行するために起こっていますか
+0

[The Definitive C Book Guide and List](// stackoverflow.com/q/562303) –

+1

このコードはどこから入手できましたか?あなたの質問は何ですか?おそらく、[ヘルプページ](http://stackoverflow.com/help)、特に[ここではどのトピックを聞くことができますか?](http://stackoverflow.com/help)を読んでください。ヘルプ/トピック)と[[どのような種類の質問を避けるべきですか?]](http://stackoverflow.com/help/dont-ask)を参照してください。また、[ツアーを受けてください](http://stackoverflow.com/tour)と[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)もご覧ください。 –

+0

あなたは何をしようとしているのか理解していませんが、開こうとするものよりも多くの閉じ括弧があります。また、別のブロック内にケースを入れないでください。ここでwhileブロック – Ordoshsen

答えて

0

caseラベルは、switch文で使用される単なるラベルです。 通常ラベルのcaseラベルとswitchステートメントをgotoステートメントの定数式で置き換えて、コードを書き換えることができます。実際には使われていないので、いくつかのラベルにコメントしました。

#include <stdio.h> 

int main(void) 
{ 
    int i = 2, j = 0; 

    goto L3; 

    /*L0:*/ 

    while (i) 
    { 
     /*L1:*/ j++; 
     /*L2:*/ j++; 
     L3: j++; 
     i--; 
    } 

    printf("j = %d\n", j); 

    return 0; 
} 

プログラム出力は

j = 4 

だからgoto文は、while文の内側(ケース)ラベルL3とステートメントに制御を渡しています。そしてこのwhile文は2回の繰り返しを実行します。他のすべてのラベルは、コメントされない場合は無視されます。

+0

モスクワの@ Vladに感謝しますが、goto文を使わないとどうなるでしょうか? –

+0

@AKASHTOMAR同じことが起こります。 –

関連する問題