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的语句