switch语句如何比较值?

时间:2015-01-24 11:17:37

标签: c++ c++11 gcc

给出以下序列

switch(1) {
    case 1:
        cout << "first \n";
    case 2:
        cout << "second \n";
    default:
        cout << "Not first nor the second";
}

输出

first 
second 
Not first nor the second

我期待输出

first

那么,如何比较价值?我知道我没有使用 break 语句,但这不是为了节省cpu时间吗?为什么第二种情况会执行,因为有两个不同的整数值?我错过了什么?

我使用gcc 4.9.2和-std = c ++ 11标志。

1 个答案:

答案 0 :(得分:2)

如果您不使用break,代码就会继续。我想在这个意义上它有点像GOTO标签。省略break语句有合法用途,例如当您想要or时......

switch(val) {
  case 1:
  case 2:
    // if val is 1 or 2...
    break;
  case 3:
    // if val == 3;
    break;
}