在 C++ 中,除非声明变量,否则不必在 switch 语句中将大括号 {} 放在 case 内。
考虑以下代码:
int Lesson82a() {
int test = 1;
switch (test) {
case 1:
{
int i = 1;
cout << i << "\n";
cout << "Inside braces" << "\n";
return 0;
}
case 2:
cout << "2" << "\n";
case 3:
cout << "3" << "\n";
}
return -1;
}
int Lesson82b() {
int test = 1;
switch (test) {
case 1:
{
int i = 1;
cout << i << "\n";
}
cout << "Outside braces" << "\n";
return 0;
case 2:
cout << "2" << "\n";
case 3:
cout << "3" << "\n";
}
return -1;
}
void Lesson82() {
int test = Lesson82a();
cout << test << "\n";
test = Lesson82b();
cout << test;
}
运行Lesson82()时,输出如下:
1
Inside braces
0
1
Outside braces
0
所以结果是相同的,但它有什么不同吗?最佳实践是什么?
break;
?编译的时候有什么区别吗?
在第 122 行:https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/begin/LearnWin32/BaseWindow/cpp/main.cpp#L122我无法理解为什么 return 语句在大括号之外。
我尝试进行实验,但无论如何,我在代码中得到了相同的结果。
无论是否声明变量,我都应该放大括号吗?
在这种情况下不需要大括号,除非你发现这样更清楚,否则不需要。
如果我放大括号,将案例的所有代码放在大括号内有什么关系吗?或者仅需要我声明的变量的代码,例如在 Lesson82b() 中,我在大括号后面运行一些代码和 return 语句。
不,没有。只有需要访问大括号内声明的变量的代码才需要位于大括号内。
我应该休息吗?返回后即使无法访问?
不,这是完全没有必要的,并且不会以我所看到的任何方式改善阅读。