以下两个switch语句的代码片段有什么区别?
哪一个更好?我什么时候可以同时使用它们?
案例1:
data
案例2:
int i = 10;
switch(i)
{
//case
}
在第二种情况下,C ++ 17允许在switch语句中初始化变量。
答案 0 :(得分:5)
在第一个版本中,i
过了switch
的范围结束。如果您稍后需要i
,可以使用它。如果编译器知道C ++ 17,则可以使用第二个版本。
答案 1 :(得分:3)
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
}