C语言中的switch case怎么出现这种意外??求解啊。。。
#include<stdio.h>main()
{
switch(1)
{
case 1:putchar('a');
case 2:putchar('a');break;
}
printf("\n");}
它为什么不显示a
而显示aa
????? case 1没有break 要在第一个case执行完之后加一个break跳出,否则它就继续执行第二个case了所以两个case各输出一个a变成了aa …………随便哪本C语言教材上都讲过的事儿,非得拿到论坛上问……现在大学生已经约等于大白菜了么…… 楼主你OUT了。。。
遇到这种问题应该先看看语法啊 三楼何必激动。。
万一LZ是自学,不知道呢
二楼正解 回复【5楼】leeseel
-----------------------------------------------------------------------
同意 XXX 最最基本的语法都能错,自学就学成这样? 吓得楼主不敢出来了!~ 知错就改就是好同志,我有很多次都是刚发完求助帖,问题就解决了,也不好意思出来~ 呵呵,路过 回复【7楼】flyunlimit 飞行无极限
最最基本的语法都能错,自学就学成这样?
-----------------------------------------------------------------------
大家应该都是这么过来的。摘掉有色眼镜吧。 回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
这个 貌似你不能说是语法错误吧? 只是逻辑错误而已。 回复【12楼】728196
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
这个 貌似你不能说是语法错误吧? 只是逻辑错误而已。
-----------------------------------------------------------------------
不算语法错误也得算语法失误吧。 如果应用在合适的场合就不是错误了。 自学他学都要看书啊,不看书是悟不出来的 大家不要吓唬LZ
有错误是正常的,记住了下次别在错就可以了 感谢大家的帮助哦。我真的在我们课本上找不到这种情况,书上只是介绍switch的用法,他又不说这些意外情况……唉!不过个人觉得编译器这样理解真的没有什么道理呀。 回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已…… 回复【18楼】aishiqi1992 小鸡
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……
-----------------------------------------------------------------------
C语言是顺序执行的,你没加break跳出来的话,就一直向下执行。 回复【18楼】aishiqi1992小鸡
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……
-----------------------------------------------------------------------
不使用break,就会顺序执行下去. 回复【18楼】aishiqi1992 小鸡
回复【7楼】flyunlimit飞行无极限
-----------------------------------------------------------------------
我知道这是错误的写法,我就是想知道为什么会出现这种结果而已……
-----------------------------------------------------------------------
如果没记错的话C语言教材里关于switch的语法说明里有这方面的说明,不加break会顺序执行还有例程,如果你的教材里没有,恭喜你你可以名正言顺的把手里的教材扔了。 break;
话说为什么楼主下面那个case有break而上面的就没有了? 谢谢了,已经知道了 好同学,记得以前读书的时候有时候自己觉得很简单的问题,不懂又不好意思问老师!
其实很多时候看似简单的问题,很容易忽略,请大家多些理解吧! 自己加个断点调试,就不用到这里丢人显眼了,基本功啊! btw 再注意 case后面允许的数据类型 我还以以为什么惊人发现呢 回复【25楼】bailao
自己加个断点调试,就不用到这里丢人显眼了,基本功啊!
-----------------------------------------------------------------------
回复【27楼】xiaodongenter
我还以以为什么惊人发现呢
-----------------------------------------------------------------------
看了这几位大侠的回复,我感觉应该开一个新手讨论区。大侠们慎重进去新手讨论区看帖子。 论坛本身就是高手菜鸟共存的吗!试设想,如果比你菜的都走了,你就是最菜的啦,到时候你就专门被人唇枪舌弹吧……。
你看这不就是举手之劳吗……
页:
[1]