【试题036】赋值运算符小例题2

文章探讨了在C语言代码中,当使用逻辑或(||)运算符时,如果左侧表达式(m=a=a=b)已经决定了结果为真,右侧表达式(n=a=a=b)由于短路现象将不会被执行,从而影响m和n的最终赋值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.题目:设int a=0,b=0,m=0,n=0;,执行(m=a==b)/(n=a==b)后m和n的值分别?

2.代码+分析:

int main() {
  //设int a=0,b=0,m=0,n=0;,执行(m=a==b)/(n=a==b)后m和n的值分别
  int a = 0,b = 0,m = 0,n = 0,x;
  x = (m = a == b) || (n = a == b);
  printf("%d\n%d\n", m, n);
  //分析:根据优先级口诀,括号第一,括号中关系比赋值高,然后逻辑或的短路现象要比运算符优先考虑
  //1. a==b,关系运算的结果是逻辑值,0==0是真的1,所以m=1
  //2.此时||的左边表达式结果为1,触发短路,右边表达式将不再执行
  //3. 所以n的值没有变化还是0
  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值