aishiqi1992 发表于 2011-9-7 22:28:51

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

#include<stdio.h>

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

        }
        printf("\n");}

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

zke2006 发表于 2011-9-7 22:33:42

case 1没有break

zhangchenggong 发表于 2011-9-7 22:37:28

要在第一个case执行完之后加一个break跳出,否则它就继续执行第二个case了所以两个case各输出一个a变成了aa

waitingconfirm 发表于 2011-9-7 22:45:47

…………随便哪本C语言教材上都讲过的事儿,非得拿到论坛上问……现在大学生已经约等于大白菜了么……

lusson 发表于 2011-9-7 22:49:02

楼主你OUT了。。。
遇到这种问题应该先看看语法啊

leeseel 发表于 2011-9-7 22:49:09

三楼何必激动。。
万一LZ是自学,不知道呢

二楼正解

xf331785508 发表于 2011-9-7 23:35:52

回复【5楼】leeseel
-----------------------------------------------------------------------

同意 XXX

flyunlimit 发表于 2011-9-8 00:00:01

最最基本的语法都能错,自学就学成这样?

nazily215 发表于 2011-9-8 08:31:43

吓得楼主不敢出来了!~

ioro55555 发表于 2011-9-8 09:34:35

知错就改就是好同志,我有很多次都是刚发完求助帖,问题就解决了,也不好意思出来~

zhangshuxin 发表于 2011-9-8 09:47:34

呵呵,路过

win100 发表于 2011-9-8 10:33:57

回复【7楼】flyunlimit 飞行无极限
最最基本的语法都能错,自学就学成这样?
-----------------------------------------------------------------------

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

728196 发表于 2011-9-8 10:51:45

回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------

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

dianzimingong 发表于 2011-9-8 11:31:23

回复【12楼】728196
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
这个 貌似你不能说是语法错误吧? 只是逻辑错误而已。
-----------------------------------------------------------------------

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

johnwjl 发表于 2011-9-8 11:32:26

如果应用在合适的场合就不是错误了。

albert_w 发表于 2011-9-8 12:23:58

自学他学都要看书啊,不看书是悟不出来的

xiaoking 发表于 2011-9-8 15:32:16

大家不要吓唬LZ
有错误是正常的,记住了下次别在错就可以了

aishiqi1992 发表于 2011-9-9 09:46:37

感谢大家的帮助哦。我真的在我们课本上找不到这种情况,书上只是介绍switch的用法,他又不说这些意外情况……唉!不过个人觉得编译器这样理解真的没有什么道理呀。

aishiqi1992 发表于 2011-9-9 09:49:33

回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

win100 发表于 2011-9-9 09:53:40

回复【18楼】aishiqi1992 小鸡
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

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

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

myips 发表于 2011-9-9 09:54:55

回复【18楼】aishiqi1992小鸡
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

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

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

loongsuns 发表于 2011-9-9 10:03:48

回复【18楼】aishiqi1992 小鸡
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……

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

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

yurinacn 发表于 2011-9-9 10:09:42

break;
话说为什么楼主下面那个case有break而上面的就没有了?

aishiqi1992 发表于 2011-9-9 14:42:37

谢谢了,已经知道了

llysc 发表于 2011-9-9 23:05:28

好同学,记得以前读书的时候有时候自己觉得很简单的问题,不懂又不好意思问老师!
其实很多时候看似简单的问题,很容易忽略,请大家多些理解吧!

bailao 发表于 2011-9-10 00:04:54

自己加个断点调试,就不用到这里丢人显眼了,基本功啊!

albert_w 发表于 2011-9-10 00:22:17

btw 再注意 case后面允许的数据类型

xiaodongenter 发表于 2011-9-10 09:32:53

我还以以为什么惊人发现呢

win100 发表于 2011-9-10 09:55:01

回复【25楼】bailao
自己加个断点调试,就不用到这里丢人显眼了,基本功啊!
-----------------------------------------------------------------------

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

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

aishiqi1992 发表于 2011-9-13 18:52:13

论坛本身就是高手菜鸟共存的吗!试设想,如果比你菜的都走了,你就是最菜的啦,到时候你就专门被人唇枪舌弹吧……。
你看这不就是举手之劳吗……
页: [1]
查看完整版本: C语言中的switch case怎么出现这种意外??求解啊。。。