为什么或的那一段的后面还是进行了赋值操作

问题遇到的现象和发生背景

c语言

问题相关代码,请勿粘贴截图

#include<stdio.h>
int main()
{
int a=3,b=3;

(a=1)&&(b=5);
printf("a=%d,b=%d\n",a,b); 

(a=1)||(b=5);
printf("a=%d,b=%d\n",a,b);

return 0;

}

运行结果及报错内容

a=1,b=5
a=1,b=5

我的解答思路和尝试过的方法

与的a=0时运行结果是
a=0,b=3
a=1,b=3

我想要达到的结果

为什么或的b不是3

判断条件少了等号,变成赋值语句了。
b的值在执行&&运算的时候修改为5了。
或操作不会修改b的值。

你写的明明是(a=1)&&(b=5)
不是你说的a=0啊。a=1后a值为1,成立,所以会执行b=5,从而b成为5
如果按你说的是 (a=0)&&(b=5),由于a为0,条件为假,那么b=5是不执行的,b还是3
那么(a=1)||(b=5)时,确实由于a为1是真,b=5不会执行,b还是3,和你说的是一样的

复制是 “=” 判断是“==”

b在第一行被赋成5了

你这自相矛盾啊,后面你自己写a=1 b=3
或的时候a=1,b本来就是3啊
测试的时候看好到底是与还是或,到底是1还是0,别自己把自己绕进去

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