先来看牛客的一道题
如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}
A i=0;j=0
B i=1;j=1
C i=0;j=1
D i=1;j=0
答案是:D
为什么呢?
考察短路逻辑的用法
&& 和 || 分别为 短路与 和 短路或
&& 若前面的表达式结果为false,整个逻辑表达式的结果就为false,所以后面的表达式无论true或者false都无法影响整个逻辑表达式的结果,所以为了提高代码执行效率,后面的表达式就不会执行
同理,若前面的表达式为true,则后面的表达式也无需计算
& 和 | 为 不短路与 和 不短路或
无论什么情况,前面的和后面的表达式都要执行
扫描二维码关注公众号,回复:
6516824 查看本文章