switch中break、“悬挂”else
程序员文章站
2024-01-05 10:10:52
...
switch中break
switch的某个case中没有break,程序会顺序向下执行;既是优势所在,也是一大弱点;遗漏某个case的break,造成一些难以理解的程序行为。
#include <iostream>
using namespace std;
int main(void) {
int color = 2;
switch (color) {
case 1:
cout<< "red" << endl;
break;
case 2:
cout<< "yellow" << endl;
/* 此处没有 break 语句 */
default:
cout<< "blue" << endl;
break;
}
}
“悬挂”else
就是 if-else
省略 { }
,else 始终与同一对括号内最近的未匹配的 if 结合。所以连续省略{ }
后,不能一眼清晰查看,也会造成程序难以理解。一般在程序规范中是不允许省略 if
后的 { }
#include <iostream>
using namespace std;
int main(void) {
int x = 1;
int y = 0;
int z = 0;
if (x==0)
if (y == 0)
cout << "y==0" << endl;
else {
z= x+y;
cout << "z = " << z << endl;
}
}
#include <iostream>
using namespace std;
int main(void) {
int x = 1;
int y = 0;
int z = 0;
if (x==0) {
if (y == 0)
cout << "y==0" << endl;
} else {
z= x+y;
cout << "z = " << z << endl;
}
}