带有switch语句的C ++逻辑

时间:2014-02-25 17:16:05

标签: c++ select case break

我开始掌握c ++,但有一件事让我感到困惑,它使用了break和select case。我知道如何做到这一点,但我想了解的是为什么会发生这种特定的操作。

说我有没有

switch (Tasty)
{
  case true:
    cout << "yum" << endl;
    break;
  case false:
    cout << "erch" << endl;
  break;
}

现在这样做是正确的并打印出我想要的东西,但如果我这样做

switch (Tasty)
{
  case true:
    cout << "yum" << endl;
  case false:
    cout << "erch" << endl;
}

为什么打印“yum”和“erch”?

6 个答案:

答案 0 :(得分:8)

switch语句中的情况最好被认为是标签。声明后

cout << "yum" << endl;

完成运行,下一个开始运行,

cout << "erch" << endl;

除非您在break声明中明确switch

答案 1 :(得分:5)

这里的答案很好,我只想举个例子,省略break实际上很有用:

case中,您无法检查多个值,例如1 || 2 || 3,因此如果您想为多个值执行相同的功能,您可以选择重复代码,例如这样:

switch (a)
{
  case 1:
    Foo();
    break;

  case 2:
    Foo();
    break;

  case 3:
    Foo();
    break;

  case 4:
    Bar();
    break;
}

除非你省略break,否则你可以写:

switch (a)
{
  case 1:
  case 2:
  case 3:
    Foo();
    break;

  case 4:
    Bar();
    break;
}

如果可能的话,代码重复总是要避免,所以这实际上很方便。

答案 2 :(得分:2)

如果您不使用break关键字,程序将继续执行以下说明。有时这会派上用场,但大多数时候这只是屁股的痛苦。

在您的情况下,如果Tastytrue,则会打印两个字。如果是false,则只有第二个。

答案 3 :(得分:1)

在交换机* 的大多数情况下需要中断,除非您特别希望交换机进入其他情况。 无论是否断裂,开关都逐行向下移动。 像C#这样的语言会自动捕获这些并阻止编译。但是C ++会让你做主,所以你需要小心添加它们。

switch(Tasty)
{
    case true:
        cout << "yum" ;
        break; /*<--- don't forget the break!*/
    case false:
        cout << "not yum";
        break;
}

答案 4 :(得分:1)

switch语句中执行的情况直到一个true(然后下一个正在执行,除非break来自switch)或直到所有条件都已经过测试

检查这个例子:

int Tasty = 1;
    switch (Tasty)
     {
         case 1:
             qDebug() << "yum" << endl;
         case 2:
             qDebug() << "erch" << endl;
     }

输出:

  

     

erch

int Tasty = 1;
    switch (Tasty)
     {
         case 2:
             qDebug() << "yum" << endl;
         case 1:
             qDebug() << "erch" << endl;
     }

输出:

  

erch

答案 5 :(得分:0)

根据Cplusplus.com &#34; 它按以下方式工作:switch计算表达式并检查它是否等于constant1;如果是,则执行group-of-statements-1直到找到break语句。当它找到这个break语句时,程序跳转到整个switch语句的结尾(结束括号)。&#34;

所以,如果你没有提供break语句,它会自动转到下一个案例,它会继续运行直到找到break语句。请点击此链接获取更多信息。

http://www.cplusplus.com/doc/tutorial/control/