#include <stdio.h>
#include <stdlib.h>int main(int argc, char **argv)
{int num = 0;if (argc == 2) {num = atoi(argv[1]);}switch (num) {case 0 ... 59:printf("差\n");break;case 60 ... 74:printf("中\n");break;case 75 ... 84:printf("良\n");break;case 85 ... 100:printf("优\n");break;default:break;}return 0;
}
执行结果:
root@seven:~/projects/test# vim test.c
root@seven:~/projects/test# gcc -o test test.c
root@seven:~/projects/test# ./test 0
差
root@seven:~/projects/test# ./test 59
差
root@seven:~/projects/test# ./test 60
中
root@seven:~/projects/test# ./test 75
良
root@seven:~/projects/test# ./test 85
良
root@seven:~/projects/test# ./test 95
优
root@seven:~/projects/test#
百度switch
才发现switch 语句
C语言中的switch
语法为:
switch(expression){case constant-expression :statement(s);break; /* 可选的 */case constant-expression :statement(s);break; /* 可选的 *//* 您可以有任意数量的 case 语句 */default : /* 可选的 */
case
的constant-expression
必须与switch
中的变量具有相同的数据类型,且必须是一个常量或字面量。
字面量
在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法
constant-expression: 常量表达式。
结论
case 的值必须是常量表达式。值域也是可以的,但是为值域时前面的值一定要小于等于后面的值,否则将无效,当然编译时会警告的。
int i = 0;
switch(i){case 'a'...'z':case 'A'...'Z':case 0 ... 9:case 150:default:break;
}
注:
使用整形数字值域时,数字和
...
使用空格隔开,以防止别人读的时候认为是小数点。
引用文献
- 字面量.
- C switch 语句 | 菜鸟教程.