当我尝试以下代码时:
#if 11 & 10 == 10
#endif
表达式的评估是正确的,但是当我将其更改为以下内容时:
#if 10 & 10 == 10
#endif
评估返回false,同时基于&的定义。运算符它应该仍然返回true(当我尝试使用正确的预处理器时)。 通常,无论我在尝试哪个在第一个操作数中都有0,返回false忽略结果是什么。
有谁知道问题是什么?
答案 0 :(得分:7)
Order of operation似乎是罪魁祸首,因为在==
之前评估了&
。括号为我工作:
#if (10 & 10) == 10
答案 1 :(得分:5)
==
的优先级高于&
if 11 & 10 == 10
评估为if 11 & 1
评估为if 1
if 10 & 10 == 10
评估为if 10 & 1
评估为if 0