【发布时间】:2018-02-16 20:28:42
【问题描述】:
我的代码:-
#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;
}
我只是在试验我的代码并尝试了这种情况。我曾期望输出是:-
是的
但输出是:-
完成
据我所知,由于编译器在读取default: 语句时不知道case 10:,因此它还必须执行其中的内容。
我的问题:-
i) 编译器何时执行default: 案例,因此为什么输出是
完成
而不是
是的
感谢您的帮助。
P.S :- 我正在使用带有 GCC 编译器的 Code::Blocks。
【问题讨论】:
-
"据我所知,默认情况的行为类似于 if-else 选择语句中的 else。" 不,它没有。
default在开关中的位置并不重要,与其他任何情况一样。 -
" 因为编译器不知道
case 10:" 哦,它肯定知道。 -
我看不出这是怎么复制的。
-
编译器不会只读取您的代码一次并一次性解释所有内容。来自cppref:“如果条件的计算结果等于常量表达式之一的值,则控制权将转移到标有该常量表达式的语句。”
标签: c++