逻辑 || 的使用 带常数操作数

UFO*_*UFO 5 xcode cocoa cocoa-touch ios

我有几个这样的定义:

#define flag   YES
#define prod   YES
#define test   NO
Run Code Online (Sandbox Code Playgroud)

这些用于测试。

在一个代码点我有

BOOL testMode = flag || prod || test;
Run Code Online (Sandbox Code Playgroud)

Xcode 抱怨这条消息:use of logical || 使用常量操作数...使用按位修复它

但我正在做的操作是合乎逻辑的,而不是按位。

如果 3 个状态之一为 YES,我希望 testMode 为 YES。

有什么线索吗?

god*_*el9 5

以下代码在没有警告的情况下获得相同的结果。

BOOL testMode = flag | prod | test;
Run Code Online (Sandbox Code Playgroud)

这可能是什么会让你更烦恼的问题......一个不必要的警告或使用按位运算|符进行本质上的逻辑运算。该警告似乎旨在捕捉人们错误地使用带有位字段的逻辑运算符。bitField || 0x4当您尝试设置位 2 时,您不会希望意外写入。


ple*_*his 5

我更喜欢这个:

BOOL testMode = (BOOL)flag || (BOOL)prod || (BOOL)test;
Run Code Online (Sandbox Code Playgroud)