| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7512 人关注过本帖
标题:关于switch嵌套switch的问题
取消只看楼主 加入收藏
slowlybear
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-10-18
收藏
 问题点数:0 回复次数:3 
关于switch嵌套switch的问题

程序如下:
#include <iostream>;
using namespace std;
void main()
{
int x=1,y=0,a=0,b=0;
switch (x)
{
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 0:a++;b++;break;
}
cout<<a<<","<<b<<endl;
}
运行结果是 2,1
为什么会执行到 case 0后面的语句呢? x的值没有变化啊,感觉是出现switch(y)以后,开始变成判断y了,可是不是只应该在
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
这一块才对Y进行判断吧?

搜索更多相关主题的帖子: switch 嵌套 
2006-11-16 18:15
slowlybear
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-10-18
收藏
得分:0 

加了break以后应该正常,我就是不明白为什么原来的程序,不加break按道理应该也不会执行到case 0后面的啊,到底是怎么回事呢?


2006-11-16 22:59
slowlybear
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-10-18
收藏
得分:0 
没错,如果没有碰到break,会一直向下,但是这是选择结构啊,不合条件应该不会运行。比如:
#include <iostream>;
using namespace std;
void main()
{
int x=1;
switch (x)
{
case 0:cout<<"xiao";
case 1:cout<<"yes";
case 2:cout<<"da";
}
}
像这样不加break,虽然都运行到了,但也只会输出yes啊,另外两条没有运行呢。


2006-11-17 18:56
slowlybear
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-10-18
收藏
得分:0 
喔?这样吗?那我回去试试。先谢过

2006-11-17 20:44
快速回复:关于switch嵌套switch的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011532 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved