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,别自己把自己绕进去