在这里,SIMPLE_EX2与0x0040进行“或”运算,整个过程作为SIMPLE_EX1的地址提供。我的理解正确吗?

#define SIMPLE_EX1  (0x0040 | SIMPLE_EX2)

最佳答案

|不是C中的管道标志。这有点明智。所以这个表达式:

0x0040 | SIMPLE_EX2

只需获取SIMPLE_EX2的值并将其第7位(从右)设置为1。
不太可能,但请注意,如果SIMPLE_EX2本身是一个运算符优先级低于|的表达式,则可能会错误地解释整个表达式。例如,如果SIMPLE_EX2a?b:c,那么SIMPLE_EX1就变成(0x0040|a)?b:c,这不是我上面写的。

10-08 02:42