例如:
int A=0;
int B=2;
int C=3;
int D=1;
if(A || B || C)
{
std::cout<<D;
}
进入if语句后,进程遇到A为0(假),则会立马结束if语句吗?也就是不管后面B,C和其他任何||符号?
这里ABC只是简单地常量,本人指的是if里面还带表达式的:如A、B、C都为表达式,执行到A为假、那么BC就不会被执行而直接跳出if吗
int A=0;
int B=2;
int C=3;
int D=1;
if(A || B || C)
{
std::cout<<D;
}
进入if语句后,进程遇到A为0(假),则会立马结束if语句吗?也就是不管后面B,C和其他任何||符号?
这里ABC只是简单地常量,本人指的是if里面还带表达式的:如A、B、C都为表达式,执行到A为假、那么BC就不会被执行而直接跳出if吗
解决方案
17
这是逻辑或运算符,假如A为假,会继续判断条件B,若B为假,继续判断C。假如是&&运算符的话,若A为假,后面的条件就不判断了。
20
你说反了吧,是A为真才不会判断B和C
1
是的
1
无profiler不要谈效率!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
20
是的,具有短路特性,假如你是if(A&&B&&C)
假如A为假就不会判断后面的B和C
假如A为假就不会判断后面的B和C
2
会的。短路,从前往后判断,假如前一个能得出整个表达式的结果,就不再往后判断了