switch 语句如何比较值?

How does switch statement compares values?

给定以下序列

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 时间吗?既然有两个不同的整数值,为什么会执行第二种情况呢?我错过了什么?

我正在使用带有 -std=c++11 标志的 gcc 4.9.2。

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

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