【c语言】&& 逻辑运算符运算规则

1.&&逻辑运算符的坑

int x=0,y=0,z=0;
z = (x==1) && (y=2);
printf("%d",y);//y=0;

今天遇到了同学问的问题,为什么y输出为0.
我第一时间也记不得,工作中一般不会写这种代码,但是却不能忽略。
通过查阅资料,也很快明了。
在 C/C++ 中,逻辑运算符 && 表示逻辑与运算。当 && 运算符的左边表达式的值为假(即 0),那么右边的表达式不会被计算,因为无论右边的表达式是真还是假,整个逻辑与表达式的结果都为假。这种情况下,右边的表达式被称为“短路”(short-circuit),因为它没有被完全计算。
例如,考虑以下代码:

int a = 5;
int b = 10;
if (a == 5 && b++ == 10) {
    // do something
}

在这个代码中,a == 5 的值为真,但是 b++ == 10 的值为假,因为 b++ 的结果是 10,但是它与 10 不相等。因此,整个逻辑与表达式的结果为假,右边的表达式 b++ == 10 没有被计算,b 的值仍然是 10。

另外,逻辑或运算符 || 也有类似的短路行为。当 || 运算符的左边表达式的值为真时,右边的表达式不会被计算,因为无论右边的表达式是真还是假,整个逻辑或表达式的结果都为真。

同学们,理解了吗?点赞了吗?

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值