【问题标题】:C/Arduino switch caseC/Arduino 开关盒
【发布时间】:2013-06-02 17:31:03
【问题描述】:

我在 Arduino 上编写代码(与 C 非常相似,我不知道,或者说很少),关于 switch/case 语句我有一点问题。

我需要我的 Arduino 来做这个或那个,这取决于电位器的值(0 到 1023)。但是,我不知道如何告诉它大小写“0 到 200”。比如我试过

case 0..250:
  blablaSomeCode;
  break;

等等……我该怎么做?

我真的不想写 case 1 case 2 case 3...

【问题讨论】:

    标签: c arduino switch-statement case robot


    【解决方案1】:

    您将不得不使用 if 的级联(也/特别是如果您的值是浮点数)

    int value= ...; 
    
    if (value>=0 && value<=250 {
        // some code 0..250
    }
    else 
    if (value>250 && value<=500) {
        // some code 251..500
    }
    else 
    if (value>500 && value<=1000) {
        // etc.
    }
    else {
        // all other values (less than zero or 1001...)
    } 
    

    【讨论】:

    • 非常感谢!我实际上写了一个名为 isIn 的函数来验证它!但是您的代码要快得多!
    • 很高兴听到!如果性能是一个问题,您可以以最常见的情况接近顶部的方式重新排序 if。 (请考虑检查答案是否正确。)
    【解决方案2】:
    switch(val)
    {
        case 0 ... 250:
            inRange(val);
            break;
    
        default:
            outOfRange();
            break;
    }
    

    虽然上一个答案中的代码是有效的,但我会坚持使用 switch 语句,因为它非常适用于要解决的问题。

    请注意,使用范围 ('...') 不符合 ANSI C 标准,但在 Arduino 环境中可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多