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