#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没变?
因为你是 或,所以第一个条件满足后,第二个条件不会执行
|(逻辑或) 又是短路操作符,即左边的表达式为假时,将不再执行右边的表达式
你已经定义了a b c d 的数左边最后是a=1的赋值语句,表达式为真,所以右边的表达式不会再执行了。
或||判断是,当前值为true之后,后面的就不执行了
"||"是短路或,条件为true,就不执行右边的判断了。“|”或就会把语句执行完
是呀,第一个条件为true,使用或就不会判断下一个条件了,跟与一样,第一个条件不成立后边的也不判断了
用 或 ‘|’就可以了,短路或,左边为true,右边就不再执行了
典型的考试题啊,实际里边谁会这么写逻辑……毒害青少年
逻辑或如如果前条件为真,则后条件不执行
或运算是如果左边的条件是true,右边的就不会执行了
是或"||”,后面不执行
||的话满足其中一个条件后边就不往下进行判断了