5

当我尝试以下代码时:

#if 11 & 10 == 10
#endif

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

#if 10 & 10 == 10
#endif

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

有谁知道问题是什么?

4

2 回答 2

7

操作顺序似乎是罪魁祸首,因为==之前进行了评估&。括号对我有用:

#if (10 & 10) == 10
于 2013-03-12T03:17:58.577 回答
5

==优先级高于&

if 11 & 10 == 10评估为if 11 & 1评估为if 1

if 10 & 10 == 10评估为if 10 & 1评估为if 0

于 2013-03-12T03:21:08.257 回答