Avi*_*mar 3 c++ switch-statement post-increment
我写了以下代码:
int i = 0;
switch(i++)
{
case 0:
cout << 0;
case 1:
cout << 1;
}
cout << "\n" << i;
Run Code Online (Sandbox Code Playgroud)
代码的输出是这样的:
01
1
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释第一行输出?为什么0和1都被打印?
Jon*_*Jon 18
首先,表达式i++(后增量运算符)的计算结果为0(即使它将值设置i为1).因此,在内部switch,case 0:分支被选中.
然后,因为break在你之后没有case 0:,程序继续执行case 1:标签中的代码.
总结一下,你有:第一个switch分支为0 ,第二个分支为1,另一个为1,因为这是最终值i.
因为您需要break在每个案例之后添加一个,这会阻止执行以下语句.例如
switch(i++)
{
case 0:
cout<<0;
break;
case 1:
cout<<1;
break;
}
Run Code Online (Sandbox Code Playgroud)
不可否认,第二次休息是多余的,但我只是为了保持一致而把它放在那里
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |