& (&) 和 && or | 之间的区别(管道)和||在Objective-C中?

Posted

技术标签:

【中文标题】& (&) 和 && or | 之间的区别(管道)和||在Objective-C中?【英文标题】:Difference between & (ampersand) and && or | (pipe) and || in Objective-C? 【发布时间】:2010-11-21 19:37:21 【问题描述】:

我想知道 Objective-C 是否关心我是写 & 还是 &&?我相信一个&符号(&)会或应该导致如果左侧已经为假,那么右侧将不会被评估。

这适用于 Objective-C 吗?

【问题讨论】:

【参考方案1】:

是的。运算符在 C 和 Objective-C 中的功能相同。

就像在 C(或 C++,如果你使用 Objective-C++)中一样,&| 是按位的,&&|| 是逻辑的(和短路的)。按位运算符(&|不是短路的。

见Operators in C and C++

【讨论】:

所以我弄错了。当左侧已经为假时, && 不会评估右侧,但是 & 无论如何都会评估两者。对吗? 并且 && 有一个布尔结果,而 & 没有。【参考方案2】:

Objective-C 使用 C 的按位和逻辑运算符(& 是按位的,&& 是逻辑的)。单个 & 将评估两个表达式。

【讨论】:

以上是关于& (&) 和 && or | 之间的区别(管道)和||在Objective-C中?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中&和&&的区别?

& 和 && 区别和联系,| 和 || 区别和联系

说说 & 和 && 还有 | 和 | | 的区别

为啥我总是要使用 ||而不是 |和 && 而不是 &?

&&,||,&,|的用法

Java中&和&&的区别? [复制]