为什么switch中有的case后加break,有的不加?

#include<stdio.h>
int c1,c2,c3;
void fun(long n)
{
c1=c2=c3=0;
while(n)
{
switch(n%10)
{
case 1:c1++;break;
case 2:c2++;break;
case 3:c3++;
}
n/=10;
}
}
void main()
{
long n=123114350L;
fun(n);
printf("\nThe result :\n");
printf("n=%ld c1=%ld c2=%ld c3=%ld \n",n,c1,c2,c3);
}
n=123114350L,这个L是干什么的,为什么输不出来?

这样的原因是,有时几种情况需要相同处理,比如:a=1,2,3时要执行a=2,a=0时执行语句a=1,否则执行语句a=3,则程序可以如下:
switch ( a )
{
case 0: a=1; break;
case 1:
case 2:
case 3: a=2; break;
default: a=3; break;
}
打字不易,如满意,望采纳。追问

把我写的程序中的break去掉为什么不行?会产生什么影响?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-09
加break就跳出不运行下面的case了,如果不加就一直运行到有break追问

运行的话不也应该不加1的吗?为什么非要跳出来呢?逻辑上可以,为什么实际上行不通呢?

追答

c++;是先用c再自加一,这里的c1,c2,c3打印后都会加1,跳不跳出来看个人要实现的功能。
L是表明这个数是long int类型的,不写的话默认认为是int

追问

哦哦,那个L,他不前边是用long 定义的吗?为什么还要写L?是不是有点多余呀?

追答

为什么要加就没有研究了,定义了长整形都加

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网