switch中default能写前面吗?
c语言吧
全部回复
仅看楼主
level 12
刘好羞🌝 楼主
因为无法判断数据上界,
想从最上面开始往下落。
2011年07月09日 12点07分 1
level 14
写在什么位置都是一样的结果。
2011年07月09日 12点07分 2
level 13
确定?
2011年07月09日 13点07分 3
level 9

2011年07月09日 13点07分 4
level 13
X疼了。。。
#include <stdio.h>
int main()
{
int n = 5230;
switch(n)
{
default:
puts("n != 5230");
break;
case 0:
puts("n == 5230");
break;
}
return 0;
}
2011年07月09日 13点07分 5
level 12
刘好羞🌝 楼主
switch (var)
{
case 1: sentence1; if (flag1) break;
case 2: sentence2; if (flag2) break;
default: sentencex; if (flagx) break;
case 3: sentence3; if (flag3) break;
case 4: sentence4; if (flag4) break;
}
比如说这样写,在什么情况下会出现什么结果?
2011年07月09日 13点07分 6
level 12
刘好羞🌝 楼主
哦哦,当int n=0;的时候,是输出的case 0的情况。
也就是说编译器不是无脑的0w0
2011年07月09日 13点07分 7
level 1
不一定哈,没有break的时候就有关系了~
2011年07月09日 13点07分 8
level 12
刘好羞🌝 楼主
@Coding狂人 求汇编分析= = case的执行原理,为什么不是单纯的直接执行default
2011年07月09日 13点07分 9
level 12
刘好羞🌝 楼主
#include <stdio.h>
int main()
{
int n = 0;
switch(n)
{
default:
puts("n != 5230");
case 0:
puts("n == 5230");
break;
}
getch();
return 0;
}
当n为0的时候,即使default没break,也不会执行default
2011年07月09日 13点07分 10
level 8
无法判断数据上界 这个是怎么实现的
可以写在后面 我在VC++6.0下试过 在GCC下也试过
#include <stdio.h>
int main(void)
{
int choice;
scanf("%d", &choice);
switch(choice)
{
case 1: fputs("一\n", stdout); break;
case 2: fputs("二\n", stdout); break;
default: fputs("从前有颗菜, 他真的很菜。RT\n", stdout); break;
case 3: fputs("三\n", stdout); break;
}
return 0;
}
sy@ubuntu:~$ gcc -Wall -o default_test.out default_test.c
sy@ubuntu:~$ ./default_test.out
3

sy@ubuntu:~$ ./default_test.out
2

sy@ubuntu:~$ ./default_test.out
10
从前有颗菜, 他真的很菜。RT

2011年07月09日 13点07分 11
level 1
这个时候n == 1的话,你把default放在下面和上面结果是不同的。这种机制拿来处理一些共有特征的时候比较有用~
2011年07月09日 13点07分 12
level 14
嗯。
2011年07月09日 13点07分 13
level 1
问题是神马?
2011年07月09日 13点07分 14
level 12
刘好羞🌝 楼主
[揉脸]我理解错题意了。
后来变得想了解为什么C不会无脑的直接运行default了
2011年07月09日 13点07分 15
level 8
我觉得 使用switch case的时候不是要确切知道多少个分支吗 并把每个分支写出来(c99 可以case 1...100好像)
但是
lz
不确定分支数 我就不明白 那还怎么用switch case
2011年07月09日 13点07分 16
level 1
大的上界总得知道吧:
swtich (n)
case 10:
case 9:
case 8:
...
case 0:
这样的,n为10的时候从10执行到0,9的时候9到0。。。这个写法做循环展开的时候比较有用,平常需要这么写的时候还是斟酌一下是不是足够合理。
2011年07月09日 13点07分 17
level 12
刘好羞🌝 楼主
比如算税款那个吧~能确定一定范围内的分支(如1-10,11-30,31-50,50+),我开始NC的想从高往低算(先default再case 4,case3),又怕没超出的时候(如15)也会执行default.
2011年07月09日 13点07分 18
level 1
[瀑布汗~]这种情形,换思路吧,你又不是税务局的大妈,不许用这种暴力无益的做法
2011年07月09日 13点07分 19
level 12
刘好羞🌝 楼主
另外这就是P比C方便的一个地方了~
P里就可以写
case (var)
begin
case 1..10:
case 11..20:
...
default:
end;
大概是这样吧。。。。好久没写了(扶额
2011年07月09日 13点07分 20
1 2 尾页