C++ 执行默认值:C+中的开关大小写选择语句+;
我的代码:-C++ 执行默认值:C+中的开关大小写选择语句+;,c++,C++,我的代码:- #include <iostream> using namespace std; int main() { int b=10; switch(b) { case 40: cout<<"no"; default: cout<<"yes"; case 10: cout<<"done"; } return 0; } #包括
#include <iostream>
using namespace std;
int main()
{
int b=10;
switch(b)
{
case 40:
cout<<"no";
default:
cout<<"yes";
case 10:
cout<<"done";
}
return 0;
}
#包括
使用名称空间std;
int main()
{
int b=10;
开关(b)
{
案例40:
cout您的程序跳转到第一个匹配的案例
只有在未找到时,默认值才会跳到
[C++14:6.4.2/5]:
当执行开关
语句时,将计算其条件并与每个case常量进行比较。如果其中一个case常量等于该条件的值,则控制权将传递给匹配case标签后面的语句。如果没有与该条件匹配的case常量,并且如果存在default
label,控制传递到由默认标签标记的语句。如果没有大小写匹配,并且没有default
,则不会执行开关中的任何语句
每当您发现自己将开关
视为“一种if
语句”时,请立即停止
根据我的说法,由于编译器在读取default:
语句时不知道案例10:
,因此它还必须执行其中的内容
这不是C++的工作原理;它(比它)更聪明。
程序跳转到第一个匹配<代码>案例< /> > < /P>
只有在未找到时,默认值才会跳到
[C++14:6.4.2/5]:
当执行开关
语句时,将计算其条件并与每个case常量进行比较。如果其中一个case常量等于该条件的值,则控制权将传递给匹配case标签后面的语句。如果没有与该条件匹配的case常量,并且如果存在default
label,控制传递到由默认标签标记的语句。如果没有大小写匹配,并且没有default
,则不会执行开关中的任何语句
每当您发现自己将开关
视为“一种if
语句”时,请立即停止
根据我的说法,由于编译器在读取default:
语句时不知道案例10:
,因此它还必须执行其中的内容
这不是C++如何工作的,它(有点)比它聪明。
“根据我所知道的,默认情况下的行为类似于IF选择语句中的其他”。“不,它不。”在交换机中<代码>默认< /代码>的位置并不重要,它比任何其他情况都要重要。“因为编译器不知道案例10:
“哦,它肯定知道。我不认为这是重复的。编译器并不是只读取您的代码一次,然后在一次传递中解释所有内容。从:”如果条件的计算结果等于某个常量_表达式的值,则控制权将转移到标有该常量_表达式的语句。”“据我所知,默认情况下的行为与If-else选择语句中的else类似。“不,它不是。一个默认值
在一个开关中的位置并不重要,比其他任何情况都重要。”因为编译器不知道情况10:
”哦,它肯定知道。我不认为这是重复的。这不是编译器只读取一次代码并在一次传递中解释所有内容的情况。来源:“如果条件的计算结果等于某个常量_表达式的值,则控制权将转移到标记有该常量_表达式的语句。”“它(有点)比这更聪明。”“Hurr Durr,它对我来说就像是一个函数,而不是构造函数调用。”ReksistLe: @记住:在C++中不可能拼出一个“构造函数调用”。当你认为你有,你就没有。“它有点聪明。”这对我来说是一个函数,而不是构造函数调用。@瑞克斯塔利:@瑞卡斯塔利:记住,C++中不可能拼出一个构造函数调用。