在C++中切换语句

msc*_*msc 1 c++ switch-statement c++17

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

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

情况1:

int i = 10;
switch(i)
{
//case
}
Run Code Online (Sandbox Code Playgroud)

案例2:

switch(int i = 10, i)
{
//case
}
Run Code Online (Sandbox Code Playgroud)

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

bip*_*pll 5

在第一个版本中i超越了switch范围结束.如果您i以后需要,可以使用它.如果编译器知道C++ 17,则可以使用第二个版本.

  • @Hasturkun感谢您的澄清.因此,自C++ 17`witch(int i = 10; i)`变为有效.无论如何它与`,`无关.我根本无法明白问题(和这个答案). (3认同)