在C ++中切换语句

时间:2017-04-19 05:24:44

标签: c++ switch-statement c++17

以下两个switch语句的代码片段有什么区别?

哪一个更好?我什么时候可以同时使用它们?

案例1:

data

案例2:

int i = 10;
switch(i)
{
//case
}

在第二种情况下,C ++ 17允许在switch语句中初始化变量。

2 个答案:

答案 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
}