Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 逻辑| |与常量操作数的使用_Ios_Xcode_Cocoa_Cocoa Touch - Fatal编程技术网

Ios 逻辑| |与常量操作数的使用

Ios 逻辑| |与常量操作数的使用,ios,xcode,cocoa,cocoa-touch,Ios,Xcode,Cocoa,Cocoa Touch,我有几个这样的定义: #define flag YES #define prod YES #define test NO 这些用于测试 在代码的某一点上 BOOL testMode = flag || prod || test; Xcode发出这样的信息:使用逻辑| |和常量操作数。。。按位修复它 但我所做的操作是逻辑的,不是按位的 如果三个状态中有一个是YES,我希望testMode是YES 有什么线索吗?以下代码在没有警告的情况下得到相同的结果 BOOL testMode =

我有几个这样的定义:

#define flag   YES
#define prod   YES
#define test   NO
这些用于测试

在代码的某一点上

BOOL testMode = flag || prod || test;
Xcode发出这样的信息:使用逻辑| |和常量操作数。。。按位修复它

但我所做的操作是逻辑的,不是按位的

如果三个状态中有一个是YES,我希望testMode是YES


有什么线索吗?

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

BOOL testMode = flag | prod | test;

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

我更喜欢这个:

BOOL testMode = (BOOL)flag || (BOOL)prod || (BOOL)test;

警告与以下内容无关:

#define flag   true
#define prod   true
#define test   false

它认为你做错了什么,想“帮助”你。这是一个令人惊讶的警告。我无法通过将您的代码粘贴到源文件中来复制。@danh是的,我使用了相同的代码,但没有收到任何警告。.我能够复制它。。。似乎可以用
booltestmode=flag | prod | test
并在没有警告的情况下获得相同的结果。这可能是一个什么会让你更烦恼的问题。。。一个不必要的警告,或者使用按位
|
运算符进行本质上的逻辑操作。它似乎是为了发现人们错误地使用带有位字段的逻辑运算符。当您试图设置位2时,您不会希望意外写入
位字段| | 0x4
。是的,编译器确实无法区分是、否和0x7341之间的区别——它们只是数值。因此,它猜测您试图执行某种位设置/屏蔽操作,并且错误地使用了“逻辑”运算符。最佳解决方案,因为它适用于任何情况。但是,不是
bool
也不是
bool