& (&) 和 && 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中?的主要内容,如果未能解决你的问题,请参考以下文章