小白求助
#include <stdio.h>int main()
{
int a = 3, b = 3;
(a = 0) && (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=0改成a=1后,
编辑后,或语句的b也变成5了这是为啥呢 本帖最后由 昨非 于 2021-2-7 20:08 编辑
一、赋值语句得值就是被赋的值
二、bool运算中的短路原则:
&& 且的前面如果是false,则不执行后面的语句
|| 或的前面如果是true,则不执行后面的语句
放到代码里就是:
#include <stdio.h>
int main()
{
int a = 3, b = 3;
(a = 0) && (b = 5); //这里执行a=0的赋值,a得值变为0,&&前得值为0(false)后面不执行
printf("a = %d, b = %d\n", a, b);
(a = 1) || (b = 5);//这里执行a=1的赋值,a得值变为1,||前得值为1(true)后面不执行
printf("a = %d, b = %d\n", a, b);
return 0;
}
所以执行的结果中,b得值一直都没变 但是当我将&&语句改动时,a = 1时,b=5在&&中成立
可为什么||语句在没有任何改动的情况下,b也发生了变化,b = 5
按常理来说||语句不应该发生变化{:5_94:} 甲鱼煲汤我最爱 发表于 2021-2-8 09:26
但是当我将&&语句改动时,a = 1时,b=5在&&中成立
可为什么||语句在没有任何改动的情况下,b也发生了变化 ...
使b=5发生变化的是
(a = 1) && (b = 5)
而不是
(a = 1) || (b = 5); {:10_298:}懂了懂了谢谢大佬 甲鱼煲汤我最爱 发表于 2021-2-8 12:25
懂了懂了谢谢大佬
解决了记得设置最佳答案哦
页:
[1]