执行(a=c>b)||(d=b>a)之后,为什么d没变?

#include "stdio.h"
void main()
{
int a = 5,b=6,c=7,d=8;
(a=c>b)||(d=b>a);
printf("%d,%d,%d,%d\n",a,b,c,d);
}

程序执行结果是1,6,7,8
为什么d没变?

11个回答

因为你是 或,所以第一个条件满足后,第二个条件不会执行

或||判断是,当前值为true之后,后面的就不执行了

|(逻辑或) 又是短路操作符,即左边的表达式为假时,将不再执行右边的表达式
你已经定义了a b c d 的数左边最后是a=1的赋值语句,表达式为真,所以右边的表达式不会再执行了。

"||"是短路或,条件为true,就不执行右边的判断了。“|”或就会把语句执行完

是呀,第一个条件为true,使用或就不会判断下一个条件了,跟与一样,第一个条件不成立后边的也不判断了

用 或 ‘|’就可以了,短路或,左边为true,右边就不再执行了

典型的考试题啊,实际里边谁会这么写逻辑……毒害青少年

逻辑或如如果前条件为真,则后条件不执行

或运算是如果左边的条件是true,右边的就不会执行了

是或"||”,后面不执行

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐