我写了以下代码:
int i = 0;
switch(i++)
{
case 0:
cout << 0;
case 1:
cout << 1;
}
cout << "\n" << i; 代码的输出如下所示:
01
1谁能解释一下输出的第一行?为什么同时打印0和1?
发布于 2011-03-08 17:46:35
首先,表达式i++ (后增量运算符)的计算结果为0(即使它将i的值设置为1)。因此,在switch中,case 0:分支处于选中状态。
然后,因为您的case 0:后面没有break,所以程序将继续执行case 1:标签中的代码。
总而言之,您有:来自第一个switch分支的0,来自第二个分支的1,以及另外一个1,因为这是i的最终值。
发布于 2011-03-08 17:46:44
因为您需要在每个case之后添加一个break,这会阻止执行以下语句。例如。
switch(i++)
{
case 0:
cout<<0;
break;
case 1:
cout<<1;
break;
} 诚然,第二次中断是多余的,但我把它放在那里只是为了保持一致性。
发布于 2011-03-08 17:47:33
您需要在每个案例的末尾加上"break;“。
https://stackoverflow.com/questions/5230754
复制相似问题