| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1682 人关注过本帖
标题:这个是怎么运行了 朋友帮忙解释一下吧!谢谢
只看楼主 加入收藏
vvvevvv
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
结帖率:96%
收藏
已结贴  问题点数:20 回复次数:14 
这个是怎么运行了 朋友帮忙解释一下吧!谢谢
程序代码:
#include<stdio.h>
void main()
{
    int a=2,b=7,c=5;
    switch (a>0)
    {
    case 1:switch(b<0)
           {
            case 1:printf("@");break;
            case 2:printf("*");break;
           }
    case 0:switch(c==5)
           {
            case 0:printf("*");break;
            case 1:printf("#");break;
            default:printf("#");break;
           }
    default :printf("&");
    }
}
朋友帮忙逐句的解释一下吧!这个怎么运行了很是混乱 谢谢!
还有 在组建的时候 出现了
.cpp(7) : warning C4144: '>' : relational expression as switch expression
.cpp(9) : warning C4144: '<' : relational expression as switch expression
.cpp(12) : warning C4808: case '2' is not a valid value for switch condition of type 'bool'
.cpp(14) : warning C4145: '==' : relational expression as switch expression; possible confusion with '='
.cpp(18) : warning C4809: switch statement has redundant 'default' label; all possible 'case' labels are given
.cpp(20) : warning C4809: switch statement has redundant 'default' label; all possible 'case' labels are given

这些事怎么回事 ,但是 下面却是.exe - 0 error(s), 0 warning(s)
谢谢~~
搜索更多相关主题的帖子: 朋友 
2011-01-03 23:27
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:2 
你的switch的表达式只有true和false两种值,你怎么搞成后面的case是数值了??

[ 本帖最后由 御坂美琴 于 2011-1-3 23:34 编辑 ]

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2011-01-03 23:31
vvvevvv
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
收藏
得分:0 
回复 2楼 御坂美琴
这是一道 练习题上的   
答案而且还对!
1和 0  不能代表  ture和false 么?
它输出的是#&  麻烦再看看吧!谢谢

学习~
2011-01-03 23:39
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:2 
#include<stdio.h>
void main()
{
    int a=2,b=7,c=5;
    switch (a>0)
    {
    case 1:switch(b<0)
           {
            case 1:printf("@");break;
            case 2:printf("*");break;
           }
    case 0:switch(c==5)
           {
            case 0:printf("*");break;
            case 1:printf("#");break;
            default:printf("#");break;
           }
    default :printf("&");break;
    }
}
PS:写这题的人都不是很了解swtich()用法,这个都是另类的代码,害死人。


小代码,大智慧
2011-01-03 23:46
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
收藏
得分:2 
switch 后面接常量,你这里的b是变量

没事来C一下...   
2011-01-04 08:20
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
#include<stdio.h>
void main()
{
    int a=2,b=7,c=5;
    switch (a>0)
    {
    case ture:
            switch(b<0)
           {
            case false: printf("@"); break;
            case true: printf("*"); break;
           }
           break;
    case false:
            switch(c==5)
           {
            case false: printf("*"); break;
            case true: printf("#"); break;
            default: printf("#"); break;
           }
          break;
     default : printf("&");  break;
    }
}


   唯实惟新 至诚致志
2011-01-04 09:18
wd6073
Rank: 1
等 级:新手上路
帖 子:47
专家分:9
注 册:2009-6-3
收藏
得分:2 
确实可以运行,vc6.0测试通过,无警告,无错误
楼主的编译器应该是vs
2011-01-04 09:44
wd6073
Rank: 1
等 级:新手上路
帖 子:47
专家分:9
注 册:2009-6-3
收藏
得分:0 
是编译的时候有警告,三个,我刚才直接连接的
2011-01-04 09:52
wd6073
Rank: 1
等 级:新手上路
帖 子:47
专家分:9
注 册:2009-6-3
收藏
得分:0 
刚才单步执行了一下你的程序,加了几个变量证实了一下猜想。
int d=-1,e=-1,f=-1;
e=(a>0);
d=(b<0);
f=(c==5);
结果是e=1,d=0,f=1,再看你的程序,switch (a>0)就是switch (1),进入case 1,在进二重switch(0),没有case符合,退出二重switch。由于第一重case后面没有break;接着执行第一重case 0,然后switch(1),输出#,跳出这重switch,同样第一重switch没有break,执行下面的default,输出&,程序结束
2011-01-04 10:06
alwaysfocus
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:25
专家分:138
注 册:2010-12-15
收藏
得分:2 
#include<stdio.h>
void main()
{
    int a=2,b=7,c=5;
    switch (a>0)
    {
    case 1:switch(b<0)
           {
            case 1:printf("@");break;
            case 2:printf("*");break;  //不可能发生
           }
    case 0:switch(c==5)
           {
            case 0:printf("*");break;
            case 1:printf("#");break;
            default:printf("#");break; //这句永远不会运行,因为对应case后都加了break
           }
    default :printf("&"); //这句必运行,因为对应case后没加break
    }
}

运行结果为:#&

[ 本帖最后由 alwaysfocus 于 2011-1-4 10:44 编辑 ]
2011-01-04 10:43
快速回复:这个是怎么运行了 朋友帮忙解释一下吧!谢谢
数据加载中...
 
   



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

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