0

给定一个像这样定义的枚举:

enum DebugModeType {
    DebugModeNone = 0,
    DebugModeButton = 1,
    DebugModeFPS = 2,
    DebugModeData = 4
};
#define DebugMode DebugModeButton|DebugModeData

我预计 的值为DebugMode&DebugModeFPS0,但我观察到它为 1。

4

1 回答 1

4

您需要在宏中使用括号来克服运算符优先级:

#define DebugMode (DebugModeButton|DebugModeData)

原样:

DebugMode & DebugModeFPS

=DebugModeButton | DebugModeData & DebugModeFPS

(被解析为DebugModeButton | (DebugModeData & DebugModeFPS)

=DebugModeButton | (4 & 2)

=DebugModeButton | 0

=DebugModeButton

=1

我建议用括号:

=(DebugModeButton | DebugModeData) & DebugModeFPS

=5 & DebugModeFPS

=5 & 2

=0

于 2012-09-02T07:49:53.753 回答