|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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得值一直都没变
|
|