黑马程序员技术交流社区
标题:
关于||和&&的疑问
[打印本页]
作者:
S捭K阖Y
时间:
2014-5-20 23:00
标题:
关于||和&&的疑问
int a=b=c=d=0
d=++a||++b&&++c
为什么a=1,d=1其余都是0,不是&&的优先级高于||吗?
作者:
从┧靇┟开始
时间:
2014-5-20 23:28
int a=b=c=d=0
d=++a||++b&&++c
先算++a过后a=1,赋值给d,d=1,||特点:左边为1 结果一定为1(真)右边不参与运算 保持原值
“&&比||的优先级高“ 我理解为 在 a||b&&c情况下,是先运算b&&c ,再 a||(b&&c)
作者:
欧翔
时间:
2014-5-21 00:04
这三个运算符是有优先级的,但是在特殊情况下还不是按其优先级来算的,比如你提问的这个是典型的例子,会出现短路现象,所谓短路现象就是使用逻辑运算符时候,当前面的逻辑运算结果已经能够决定整个运算条件的真假时就停止运算,后面的逻辑式都没有进行运算,所以当++a运算完之后后面的逻辑式就不会运算了
作者:
大龄产妇
时间:
2014-5-21 01:21
不说别的,先上代码。
a=b=c=d=0;
d=++a||(++b&&++c);
printf("a = %d,b = %d,c = %d,d = %d\n",a,b,c,d);
d=(++b&&++c)||++a;
复制代码
++ 的优先级,高于 || 运算符
因此,过程是最先计算了++a,a = 1,为真。
当“ || ”运算无论左右两边有一方为真时,运算结束。
楼主明白了吧!
作者:
S捭K阖Y
时间:
2014-5-24 21:16
大龄产妇 发表于 2014-5-21 01:21
不说别的,先上代码。
++ 的优先级,高于 || 运算符
十分感谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2