C/C++中Switch语句中default放在首位情况

C/C++中Switch语句中default放在首位情况

问题描述

昨天参加了讯飞的C++线上测试,卷子还算简单,但是问题出的很有趣,选择题中有一题如下:
读出最后的sum的值

#include<iostream>
using namespace std;
int main() {
    int sum = 0;
    for (int n = 0; n < 4; n++) {
        switch (n) {
        default:sum += 4;
        case 1:sum += 1;
        case 2:sum += 2;
        case 3:sum += 3;
        }
    }
    cout << sum << endl;
    system("pause");
    return 0;
}

解决

这是我第一次遇见这种情况,一般都把default放在最后的,而且每个case后都会习惯性的加上break。简单的看,default就相当于一个匹配任意情况的case,所以读程序就很简单了。
为了检验,修改代码如下:

#include<iostream>
using namespace std;
int main() {
    int sum = 0;
    for (int n = 0; n < 4; n++) {
        switch (n) {
        default:sum += 4;
        case 1:sum += 1;
        case 2:sum += 2;
        case 3:sum += 3;
        }
        cout << sum << endl;
    }
    system("pause");
    return 0;
}

四次输出结果分别为10、16、21、24,因为没有break,所以会执行匹配到的case和下面的所有case的语句

猜你喜欢

转载自blog.csdn.net/weixin_38312031/article/details/80518752