switch语句中的if语句?

时间:2012-02-25 16:59:50

标签: c++ visual-studio visual-studio-2010

我很难理解为什么一种方式有效,而方式则不然。

我有;

switch (key)
        {
            //If Game over Label is visible, enable the m and e buttons
            if(mGameOverLabel->GetVisible())
            {
                case 'm': case 'M':
                    ResetScreen();
                    break;

                case 'e': case 'E':
                //  //Exit the game
                    Stop();
                    break;
            } else {

                case ' ':
                    mSpaceship->Shoot();
                    break;

                default:
                    break;
            }

对于m和e的情况,即使mGameOverLabel在当前时间设置为false,我仍然可以按M和E,这些将根据方法做出反应,但是如果我将其更改为此为M它然后只有在我需要的时候才会工作。我在这里错过了什么吗?!

switch (key)
        {
            //If Game over Label is visible, enable the m and e buttons

            case 'm': case 'M':
                if(mGameOverLabel->GetVisible()) ResetScreen();
                break;
            }   

1 个答案:

答案 0 :(得分:7)

switch基本上会对相应的案例标签执行goto。 <{1}}以上的任何逻辑都不会被执行。