首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >switch语句和递增运算符

switch语句和递增运算符
EN

Stack Overflow用户
提问于 2011-03-08 17:44:14
回答 4查看 2.3K关注 0票数 3

我写了以下代码:

代码语言:javascript
运行
复制
int i = 0;  
switch(i++)  
{
   case 0:  
     cout << 0;  
   case 1:  
     cout << 1;
}  
cout << "\n" << i;  

代码的输出如下所示:

代码语言:javascript
运行
复制
01  
1

谁能解释一下输出的第一行?为什么同时打印0和1?

EN

回答 4

Stack Overflow用户

发布于 2011-03-08 17:46:35

首先,表达式i++ (后增量运算符)的计算结果为0(即使它将i的值设置为1)。因此,在switch中,case 0:分支处于选中状态。

然后,因为您的case 0:后面没有break,所以程序将继续执行case 1:标签中的代码。

总而言之,您有:来自第一个switch分支的0,来自第二个分支的1,以及另外一个1,因为这是i的最终值。

票数 18
EN

Stack Overflow用户

发布于 2011-03-08 17:46:44

因为您需要在每个case之后添加一个break,这会阻止执行以下语句。例如。

代码语言:javascript
运行
复制
switch(i++)  
{
   case 0:  
     cout<<0;  
     break;
   case 1:  
     cout<<1;
     break;
}  

诚然,第二次中断是多余的,但我把它放在那里只是为了保持一致性。

票数 7
EN

Stack Overflow用户

发布于 2011-03-08 17:47:33

您需要在每个案例的末尾加上"break;“。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5230754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档