2016-12-08 7 views
1
#include <iostream> 
using namespace std; 

int main() { 
    int a=2,b=2; 
    switch(a){ 
    case 1: 
     cout<<"A"<<endl; 
     if(b==5){ 
      case 2: 
       cout<<"A"<<endl; 
     } 
    case 3: 
     cout<<"A"<<endl; 
    } 
    return 0; 
} 

「」のをどのようにこのコードの出力2を理解することができないでif文の内部スイッチケースのケースを使用することができ、どのように置くことができる場合が、私はC++

+0

[このページ](http://blog.robertelder.org/switch-statements-statement-expressions/)を読むと、ケースステートメントはまさに何でもできることを理解するでしょう! –

+0

短い答えです。これはDuffのデバイスが基づいているのと同じ原理です。しかし、私はあなたがそうするべきではないと思っています... – StoryTeller

+0

スイッチに入れているのはなぜですか?変数を選択してスイッチ(選択肢)に入れ、ユーザーが選択肢の数を入力すると、その選択肢は選択フォーム – Armin97

答えて

0

の外にそれは2 'A'を出力しますあなたはbreakステートメントを提供していないからです。

3

あなたはcase 2がヒットしたときに、それはcase 3にフォールスルーし、もう少し明らかにされているだろうあなたはそれぞれのケースで異なる出力を使用した場合は第二A.

を印刷し、どこでもbreakを持っていません。

はい、文法を使用すると、ケース内にケースを入れることができます。duff's deviceはコンパイルできます。

+0

で選択されます。存在しないのと同じくらい良いですか? –

+0

コードをそのまま 'true'に評価することはありません。 'int a = 1、b = 5;'を変更すると、ifはtrueを評価し、3のAs出力を得ます。 –

+0

感謝した –