搜索
bottom↓
回复: 24

C语言case语句 "case 1 ... 4:" 为什么可以运行?

[复制链接]

出0入0汤圆

发表于 2018-7-24 15:13:33 | 显示全部楼层 |阅读模式
试了一下如下代码:

#include <stdio.h>

int
main(void)
{
  int t1, t2;

  printf("test start\n");

  t1 = 3;

  switch(t1)
    {
    case 1 ... 4:
      printf("hit!\n");
      break;
    default:
      printf("miss!\n");
      break;
    }


  return 0;
}

在linux下使用gcc-4.4.7 编译运行ok,输出hit!。

请问这个 “case 1 ... 4:” 的语法是在哪里定义的?新的C标准中吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入93汤圆

发表于 2018-7-24 15:19:12 | 显示全部楼层
是GCC的扩展语法。

出0入0汤圆

发表于 2018-7-24 15:26:21 | 显示全部楼层
二楼猫哥对

出0入0汤圆

发表于 2018-7-24 15:28:46 | 显示全部楼层
还可以这样写啊,学习了

出0入0汤圆

 楼主| 发表于 2018-7-24 15:29:33 | 显示全部楼层
takashiki 发表于 2018-7-24 15:19
是GCC的扩展语法。

学习了 谢谢~

出0入0汤圆

 楼主| 发表于 2018-7-24 15:34:29 | 显示全部楼层
顺便上传一下 刚才收到的gcc的51项扩充,其中5.21 Case Ranges 就是我遇到的问题 :-)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2018-7-24 15:39:09 | 显示全部楼层
刚才上传的文件截取于 gcc 文档: https://gcc.gnu.org/onlinedocs/g ... ml#toc_C-Extensions,惭愧,手册看的还是太少

出0入8汤圆

发表于 2018-7-24 15:57:17 | 显示全部楼层
还可以这样,学习了。

出10入120汤圆

发表于 2018-7-24 15:58:57 来自手机 | 显示全部楼层
确实这个扩展很方便

出0入93汤圆

发表于 2018-7-24 16:09:02 | 显示全部楼层
gamethink 发表于 2018-7-24 15:34
可惜MDK不支持(以前,现在不知道呢)


印象中一直都是支持的,一定是你打开方式不对……
Keil UV4中,在C/C++选项卡中,Misc Controls中填写--gnu就会支持GCC特性。Keil UV5我没用过但一定会支持的吧。

出0入0汤圆

发表于 2018-7-24 17:08:37 | 显示全部楼层
第一次看到有时间试一下。

出0入0汤圆

发表于 2018-7-24 17:25:45 | 显示全部楼层
可以用  
case 1:
case 2:
case 3:
case 4:

出0入0汤圆

发表于 2018-7-24 17:28:59 | 显示全部楼层
这个好几年前就有了。论坛里也有过讨论。

出0入0汤圆

发表于 2018-7-24 17:38:42 | 显示全部楼层
学习了

出140入8汤圆

发表于 2018-7-24 20:07:47 | 显示全部楼层
这个让我想起了 百达翡丽广告语:没人能拥有百达翡丽,只不过为下一代保管而已!我想C语言也是这样的东西。

出30入54汤圆

发表于 2018-7-24 20:53:05 | 显示全部楼层
支持是支持,但是感觉会让代码的可移植性变得很差

出0入10汤圆

发表于 2018-7-24 21:59:04 | 显示全部楼层
松下PLC的ST语言也这样写

出0入0汤圆

发表于 2018-7-27 08:56:34 来自手机 | 显示全部楼层
能不用就不要用,非标语法

出0入0汤圆

发表于 2018-7-27 09:03:31 | 显示全部楼层
本帖最后由 Victor2012 于 2018-7-27 09:05 编辑

    case 1:;
    case 2:;
    case 3:;
    case 4:
      printf("hit!\n");
      break;
    default:
      printf("miss!\n");
      break;

出0入0汤圆

发表于 2018-7-27 10:53:04 | 显示全部楼层
学习了,第一次见到这种写法!

出0入0汤圆

发表于 2018-7-29 11:15:17 来自手机 | 显示全部楼层
takashiki 发表于 2018-7-24 15:19
是GCC的扩展语法。

学习了,多谢

出0入0汤圆

发表于 2018-7-29 11:32:30 来自手机 | 显示全部楼层
才知道,学习了

出10入120汤圆

发表于 2018-7-29 11:39:22 来自手机 | 显示全部楼层
Victor2012 发表于 2018-7-27 09:03
case 1:;
    case 2:;
    case 3:;

case 1:
case 2:
case 3:
case 4:
.
.
.
break;



不需要每个case后面的分号
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 16:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表