我想问一下,为什么输出是这样呀?

#include<stdio.h>
int main()
{
int a,b,c;
a=b=c=-1;
(a=0)&&(b=1)||(c=1);
printf("a=%d,b=%d,c=%d\n",a,b,c);
a=b=c=-1;
(a=0)||(b=1)&&(c=1);
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0;
}

img

(a=0)&&(b=1)||(c=1);
a=0会执行,b=1不执行,c=1执行
(a=0)||(b=1)&&(c=1);
a=0执行,b=1执行,c=1执行
=================
规律:
&&表达式,如果左边为假,则右边不执行
||表达式,如果左边为真,则右边不执行

一开始a b c都是-1
(a=0)&&(b=1)||(c=1);从右向左 c=1赋值运算然后(b=1)||(c=1)为真,或有一个为真就行左边b=1不执行
a=0赋值运算 输出a=0,b=-1,c=1

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632