【问题标题】:and bitwise operator in C preprocessor和 C 预处理器中的按位运算符
【发布时间】:2013-03-12 03:12:22
【问题描述】:

当我尝试以下代码时:

#if 11 & 10 == 10
#endif

表达式的评估为真,但是当我将其更改为以下内容时:

#if 10 & 10 == 10
#endif

评估返回 false,而根据 & 运算符的定义,它仍应返回 true(当我尝试使用正确的预处理器时)。 通常,无论我尝试什么,在第一个操作数中有 0 都会返回 false,而忽略结果是什么。

有谁知道问题出在哪里?

【问题讨论】:

    标签: c c-preprocessor


    【解决方案1】:

    Order of operation 似乎是罪魁祸首,因为==& 之前被评估。括号对我有用:

    #if (10 & 10) == 10
    

    【讨论】:

      【解决方案2】:

      == 的优先级高于&

      if 11 & 10 == 10 计算结果为 if 11 & 1 计算结果为 if 1

      if 10 & 10 == 10 计算结果为 if 10 & 1 计算结果为 if 0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 2011-06-14
        • 2023-01-10
        • 2018-06-09
        • 2023-03-17
        • 1970-01-01
        相关资源
        最近更新 更多