黑马程序员技术交流社区
标题:
逻辑短路问题
[打印本页]
作者:
goobag
时间:
2014-4-29 20:54
标题:
逻辑短路问题
||和&&是我们经常用到的逻辑运算符虽然简单,但容易犯错。
例如:
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//if里的处理语句
}
printf("i=%d;j=%d\n",i,j);
结果:i=1;j=0。
逻辑运算符||两边的条件只要有一个为真,其结果就为真;只有两个结果都为假,其结果才为假。if((++i>0)||(++j>0))语句中,先计算(++i>0),发现其结果为真,则判断语句为真,后面的(++j>0)便不再计算。所以只进行了++i,则i等于1,j等于0.
int i=-1;
int j=-1;
if((++i>0) && (++j>0))
{
//if里的处理语句
}
printf("i=%d;j=%d\n",i,j);
结果:i=0;j=-1。
逻辑运算符&&两边的条件只有两个都为真,其结果就为真;只要有一个结果为假,其结果就为假。if((++i>0)||(++j>0))语句中,先计算(++i>0),发现其结果为假,则判断语句为假。后面的(++j>0)便不再计算。所以只进行了++i,则i等于0,j等于-1.
在逻辑 || 中由于前面一个语句为真,不管后面的语句是真还是假,整个语句都为真,所以后面的语句就不用执行了。
在逻辑 && 中由于前面一个语句为假,不管后面的语句为真还是假,整个语句都为假,所以后面的语句也都不用执行了。
这样的情况就是逻辑短路
作者:
世俗孤岛
时间:
2015-3-7 21:00
嗯,是啊
作者:
baby14
时间:
2018-8-10 07:56
多谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2