C++ 中的 switch 语句
switch statements in C++
下面两个switch语句的代码片段有什么区别?
哪个更好?我什么时候可以同时使用它们?
案例 1:
int i = 10;
switch(i)
{
//case
}
案例 2:
switch(int i = 10, i)
{
//case
}
在第二种情况下,C++17 允许在 switch 语句中初始化变量。
在第一个版本中,i
存在于 switch
的作用域结束之后。如果以后需要 i
,您可以使用它。如果你的编译器知道 C++17,你可以使用第二个版本。
switch (int i = 42; i)
是 C++17 并且会将 i
的范围限制为开关,它主要等同于:
// Code before switch
{ // Additional scope
int i = 42;
switch (i) {
// case...
}
}
// Code after switch
它也适用于 if
if (int i = 42; i == foo()) {
// Can use i
} else {
// Can use i
}
下面两个switch语句的代码片段有什么区别?
哪个更好?我什么时候可以同时使用它们?
案例 1:
int i = 10;
switch(i)
{
//case
}
案例 2:
switch(int i = 10, i)
{
//case
}
在第二种情况下,C++17 允许在 switch 语句中初始化变量。
在第一个版本中,i
存在于 switch
的作用域结束之后。如果以后需要 i
,您可以使用它。如果你的编译器知道 C++17,你可以使用第二个版本。
switch (int i = 42; i)
是 C++17 并且会将 i
的范围限制为开关,它主要等同于:
// Code before switch
{ // Additional scope
int i = 42;
switch (i) {
// case...
}
}
// Code after switch
它也适用于 if
if (int i = 42; i == foo()) {
// Can use i
} else {
// Can use i
}