C语言switch

您所在的位置:网站首页 switch语句的用法c语言 C语言switch

C语言switch

2023-10-24 12:45| 来源: 网络整理| 查看: 265

switch语句的GCC拓展

一般的C语言规范中我们认为case语句后面紧跟着就是整形数据,但是在gcc/g++中case语句后面可以接一个范围,其语法如下:

switch(data) { case low_1 ... hight_1 : func1(); break; case low_2 ... hight_2 : func2(); break; …… default : funcDefault(); break; } 可能出现的错误

注意:

如果有以下的报错,可能是你的编译器不是gcc/g++

error: too many decimal points in number

如果有以下的错误,那么你的参数值可能有重复

error: duplicate (or overlapping) case value

如果有以下的错误,那么你的第一个参数与英文句号之间没有空格

error: expected ‘:’ or ‘…’ before numeric constant

举例

以下是一个输入成绩出现评分的例子,如果是标准C语言,我们想要实现它只有通过if-else语句实现,如果使用gcc编译器的话现在使用switch-case语句就可以实现了。并且由于switch语句使用的是压栈的方式进行,在处理多层数据的时候表现要优于if-else语句,当然如果只有以下的4层结构使用if-else在代码的执行上更有优势,但是使用switch-case语句在代码表现上更加好看。

#include int main() { float score; int grade; scanf("%f",&score); printf("Your Grade:"); grade = (int) score; switch(grade) { case 85 ... 100:printf("A\n");break; case 70 ... 84:printf("B\n");break; case 61 ... 69:printf("C\n");break; case 0 ... 60:printf("D\n");break; default : printf("ERROR\n"); } return 0; } GCC的其余拓展

当然 GNU c 标准还支持了其他拓展,例如:

允许零长度数组语句表达式typeof关键字可变参数的宏标号元素 ……

以上列举了一些特殊的拓展,大家有兴趣的话可以自己去看一下 GNU C 的语法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3