C++ C++;:关于开关和断路器的简短问题

C++ C++;:关于开关和断路器的简短问题,c++,switch-statement,C++,Switch Statement,例如: switch( x ) { case y: if ( true ) { break; } cout << "Oops"; break; } 开关(x) { 案例y: 如果(真) { 打破 } coutNo,Oops不会被写出来,break跳转到此语句后面 您可以有条件地使用break语句,只需在创建也支持break的嵌套语句(即循环)时小心即可 它当然不是switch语句所需语法的一部分(就像右大括号是块语法的一部分)。break是一个语句,本质上意味着“

例如:

switch( x )
{
case y:
 if ( true )
 {
    break;
 }
 cout << "Oops";
 break;
}
开关(x)
{
案例y:
如果(真)
{
打破
}

coutNo,
Oops
不会被写出来,
break
跳转到此语句后面


您可以有条件地使用
break
语句,只需在创建也支持
break
的嵌套语句(即循环)时小心即可


它当然不是switch语句所需语法的一部分(就像右大括号是块语法的一部分)。
break
是一个语句,本质上意味着“将执行转移到最内部的breakable构造结束后的点”。
break
是绝对动态的。因此,如果您编写
if(false)break;
你的
Oops
会被写出来。

在这种情况下,把
break
想象成一个
转到开关的末尾

不,它不会在你的情况下被打印出来。
break
只从开关和循环中中断,而不是从条件或函数或任意封闭范围中中断。因此,一个更相关的问题将会出现d在这种情况下是否打印Oops:

开关(x)
{
案例y:
对于(int i=0;i<10;++i)
{
打破
}

cout否。它将脱离开关构造。“break”用于脱离最内部的循环构造或开关构造。因此,在您的情况下,“oops”不会打印在屏幕上。如果您希望发生这种情况,在代码中,可以使用If(false)而不是If(true).

你为什么不自己编译和测试它?从什么时候开始信任一个特定的实现是明智的?一个好的编译器会告诉你这里有无法访问的代码。-1为什么你不自己编译和测试它?@所有的Flamer:我以前编译过它,它工作了。我仍然不确定为什么。我还问过如何破解w在这种情况下是不可能的
switch( x )
{
case y:
 for ( int i = 0; i < 10; ++i )
 {
    break;
 }
 cout << "Oops";
 break;
}