搜索
bottom↓
回复: 29

C语言中的switch case怎么出现这种意外??求解啊。。。

[复制链接]

出0入0汤圆

发表于 2011-9-7 22:28:51 | 显示全部楼层 |阅读模式
#include<stdio.h>

main()
{
        switch(1)
        {
                case 1:putchar('a');
                case 2:putchar('a');break;

        }
        printf("\n");}

它为什么不显示a
而显示aa
?????

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-9-7 22:33:42 | 显示全部楼层
case 1没有break

出0入0汤圆

发表于 2011-9-7 22:37:28 | 显示全部楼层
要在第一个case执行完之后加一个break跳出,否则它就继续执行第二个case了所以两个case各输出一个a变成了aa

出0入0汤圆

发表于 2011-9-7 22:45:47 | 显示全部楼层
…………随便哪本C语言教材上都讲过的事儿,非得拿到论坛上问……现在大学生已经约等于大白菜了么……

出0入54汤圆

发表于 2011-9-7 22:49:02 | 显示全部楼层
楼主你OUT了。。。
遇到这种问题应该先看看语法啊

出0入0汤圆

发表于 2011-9-7 22:49:09 | 显示全部楼层
三楼何必激动。。
万一LZ是自学,不知道呢

二楼正解

出0入0汤圆

发表于 2011-9-7 23:35:52 | 显示全部楼层
回复【5楼】leeseel
-----------------------------------------------------------------------

同意 XXX

出0入0汤圆

发表于 2011-9-8 00:00:01 | 显示全部楼层
最最基本的语法都能错,自学就学成这样?

出0入0汤圆

发表于 2011-9-8 08:31:43 | 显示全部楼层
吓得楼主不敢出来了!~

出0入0汤圆

发表于 2011-9-8 09:34:35 | 显示全部楼层
知错就改就是好同志,我有很多次都是刚发完求助帖,问题就解决了,也不好意思出来~

出0入0汤圆

发表于 2011-9-8 09:47:34 | 显示全部楼层
呵呵,路过

出0入0汤圆

发表于 2011-9-8 10:33:57 | 显示全部楼层
回复【7楼】flyunlimit 飞行无极限
最最基本的语法都能错,自学就学成这样?
-----------------------------------------------------------------------

大家应该都是这么过来的。摘掉有色眼镜吧。

出0入0汤圆

发表于 2011-9-8 10:51:45 | 显示全部楼层
回复【7楼】flyunlimit  飞行无极限
-----------------------------------------------------------------------

这个 貌似你不能说是语法错误吧? 只是逻辑错误而已。

出0入0汤圆

发表于 2011-9-8 11:31:23 | 显示全部楼层
回复【12楼】728196
回复【7楼】flyunlimit  飞行无极限
-----------------------------------------------------------------------
这个 貌似你不能说是语法错误吧? 只是逻辑错误而已。
-----------------------------------------------------------------------

不算语法错误也得算语法失误吧。

出0入0汤圆

发表于 2011-9-8 11:32:26 | 显示全部楼层
如果应用在合适的场合就不是错误了。

出0入42汤圆

发表于 2011-9-8 12:23:58 | 显示全部楼层
自学他学都要看书啊,不看书是悟不出来的

出0入0汤圆

发表于 2011-9-8 15:32:16 | 显示全部楼层
大家不要吓唬LZ
有错误是正常的,记住了下次别在错就可以了

出0入0汤圆

 楼主| 发表于 2011-9-9 09:46:37 | 显示全部楼层
感谢大家的帮助哦。我真的在我们课本上找不到这种情况,书上只是介绍switch的用法,他又不说这些意外情况……唉!不过个人觉得编译器这样理解真的没有什么道理呀。

出0入0汤圆

 楼主| 发表于 2011-9-9 09:49:33 | 显示全部楼层
回复【7楼】flyunlimit  飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

出0入0汤圆

发表于 2011-9-9 09:53:40 | 显示全部楼层
回复【18楼】aishiqi1992 小鸡
回复【7楼】flyunlimit  飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

-----------------------------------------------------------------------

C语言是顺序执行的,你没加break跳出来的话,就一直向下执行。

出0入0汤圆

发表于 2011-9-9 09:54:55 | 显示全部楼层
回复【18楼】aishiqi1992  小鸡
回复【7楼】flyunlimit  飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

-----------------------------------------------------------------------

不使用break,就会顺序执行下去.

出0入0汤圆

发表于 2011-9-9 10:03:48 | 显示全部楼层
回复【18楼】aishiqi1992 小鸡
回复【7楼】flyunlimit  飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

-----------------------------------------------------------------------

如果没记错的话C语言教材里关于switch的语法说明里有这方面的说明,不加break会顺序执行还有例程,如果你的教材里没有,恭喜你你可以名正言顺的把手里的教材扔了。

出0入0汤圆

发表于 2011-9-9 10:09:42 | 显示全部楼层
break;
话说为什么楼主下面那个case有break而上面的就没有了?

出0入0汤圆

 楼主| 发表于 2011-9-9 14:42:37 | 显示全部楼层
谢谢了,已经知道了

出0入17汤圆

发表于 2011-9-9 23:05:28 | 显示全部楼层
好同学,记得以前读书的时候有时候自己觉得很简单的问题,不懂又不好意思问老师!
其实很多时候看似简单的问题,很容易忽略,请大家多些理解吧!

出0入0汤圆

发表于 2011-9-10 00:04:54 | 显示全部楼层
自己加个断点调试,就不用到这里丢人显眼了,基本功啊!

出0入42汤圆

发表于 2011-9-10 00:22:17 | 显示全部楼层
btw 再注意 case后面允许的数据类型

出0入0汤圆

发表于 2011-9-10 09:32:53 | 显示全部楼层
我还以以为什么惊人发现呢

出0入0汤圆

发表于 2011-9-10 09:55:01 | 显示全部楼层
回复【25楼】bailao
自己加个断点调试,就不用到这里丢人显眼了,基本功啊!
-----------------------------------------------------------------------

回复【27楼】xiaodongenter
我还以以为什么惊人发现呢
-----------------------------------------------------------------------

看了这几位大侠的回复,我感觉应该开一个新手讨论区。大侠们慎重进去新手讨论区看帖子。

出0入0汤圆

 楼主| 发表于 2011-9-13 18:52:13 | 显示全部楼层
论坛本身就是高手菜鸟共存的吗!试设想,如果比你菜的都走了,你就是最菜的啦,到时候你就专门被人唇枪舌弹吧……。
你看这不就是举手之劳吗……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 19:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表