【问题标题】:C: OR-Compare several variables to match a certain valueC:OR-比较几个变量以匹配某个值
【发布时间】:2017-01-07 11:55:06
【问题描述】:

这个伪代码的正确 C 表达式是什么?

If( (value1 OR value2 OR value3) == sizeof(array) ) 那么...

看来,我的方法不能正常工作:

if( (LED->index_red || LED->index_green || LED->index_blue) == sizeof(pwm_table)/sizeof(uint8_t) )

提前致谢。

【问题讨论】:

  • 你必须 OR 3 个相等条件。

标签: c compare


【解决方案1】:

它不是这样工作的(好吧,它会编译但会将 0 或 1 与您的值进行比较,这不是您想要的)。

您必须执行 3 次 ORed 相等性测试:

if ((LED->index_red == (sizeof(pwm_table)/sizeof(uint8_t))) || 
    (LED->index_green == (sizeof(pwm_table)/sizeof(uint8_t))) || 
    (LED->index_blue == (sizeof(pwm_table)/sizeof(uint8_t)))) {...}

当您这样做时,如果您知道哪个条件最有可能为真,请将其放在表达式的首位,因为逻辑 OR 会使其他测试短路,因此您的代码会更快。

顺便说一句,不用担心除法成本,它是在编译时完成的。

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 2021-10-30
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2022-09-09
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多