目标C条件陈述评估

Mik*_*keS 1 conditional objective-c ios

可能重复:
是否在C/C++中强制要求短路布尔运算符?和评估顺序?

在研究iOS问题时,我发现了以下答案:如何判断UIViewController的视图是否可见

答案的细节并不重要,但重要的是它基本上说如果你有一个看似如下的条件语句......

if(X && Y)
{
    //do stuff here
}
Run Code Online (Sandbox Code Playgroud)

如果X为假,则永远不会评估Y. 这是真的?是否可以肯定编译器不会优化它if(Y && X)

Rui*_*res 6

如果X为假,它将返回false并且不会评估Y.这是一个优化.

  • 但不要与编译器优化混淆.它是C/C++标准的一部分.如果`&&'超载则不是这样,请参阅http://stackoverflow.com/a/2108502/1187415. (3认同)