首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在开关语句中将多个案例分组在一起

在开关语句中将多个案例分组在一起
EN

Stack Overflow用户
提问于 2019-02-12 16:21:01
回答 5查看 1.1K关注 0票数 3

下面是开关语句的代码:

代码语言:javascript
复制
 switch(pin)
  {
  case 1:
    break;
  case 2:   case 3:  case 4:  case 5:  case 6:  case 7:  case 8:  case 9:  case 10:  case 11:
  case 12:  case 13:  case 14:  case 15:  case 16:  case 17:  case 18:  case 19:  case 20:
  case 21:  case 22:  case 23: case 24:case 25:case 26:case 27:case 28:case 29: case 30: case 31:
  case 32: case 33: case 34: case 35:

    dataOut[pin-2] = 1;
    DAQmxWriteDigitalLines(taskHandleOut,1,1,10.0,DAQmx_Val_GroupByChannel,dataOut,NULL,NULL);

    break;

  default:
    break;

在上面的例子中,2-35将被分组,我的意思是,当pin等于2-35时,将执行特定的任务。

我想知道上面的代码是否有效。我还没有在开关语句中看到案例分组。任何类似的多案例分组的网页链接将不胜感激。也许有更好的方法来做到这一点,而不是分组多个案例。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-02-12 16:27:57

虽然您的案例可能更好地服务于if-check if (pin >= 2 && pin <= 35),但是像这样分组案例标签是很常见的。

gcc/clang/tinycc甚至还有语法糖:

代码语言:javascript
复制
switch(pin){
case 2 ... 35: /*nonstandard GNU extension; note well the whitespace*/
};
票数 4
EN

Stack Overflow用户

发布于 2019-02-12 16:22:46

是的,这很好,虽然我会写

代码语言:javascript
复制
if (pin >= 2 && pin <= 35){
    dataOut[pin-2] = 1;
    DAQmxWriteDigitalLines( ...
}

我要是你的话。如果您只使用gcc作为您的编译器,那么也可以使用案例范围

票数 4
EN

Stack Overflow用户

发布于 2019-02-12 16:23:40

它是有效的。它被称为 will ,这也是为什么您必须将breaks分隔为cases的原因,也就是说,如果您不使用break,那么您的情况下的指令无论如何都会被执行。就像在

代码语言:javascript
复制
int i = 1;
switch(i) {
    case 1:
        cout<<1<<endl;
    case 2:
        cout<<"nope!\n";
}

这将输出

代码语言:javascript
复制
1
nope!

因为在break之前没有case 2:

但在你的情况下,你也可以

代码语言:javascript
复制
if (pin >= 2 && pin <= 35) {
    dataOut[pin-2] = 1;
    DAQmxWriteDigitalLines(taskHandleOut,1,1,10.0,DAQmx_Val_GroupByChannel,dataOut,NULL,NULL);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54654454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档