永发信息网

C语言逻辑关系

答案:1  悬赏:10  手机版
解决时间 2021-03-02 04:38
  • 提问者网友:杀手的诗
  • 2021-03-01 09:53
#include<stdio.h>
void main()
{
int a=1,b=2,c=3,d;
d=--a&&b--||c--;
printf("%d %d %d %d\n",a,b,c,d);

}
结果是: 0 2 2 1
为什么b没变,c自减了???
最佳答案
  • 五星知识达人网友:大漠
  • 2020-04-19 09:29
逻辑与&&的左侧表达式若为假,则结果一定为假,不再计算右侧表达式;
同理,逻辑或||的左侧表达式若为真,则结果一定为真,不再计算右侧表达式。
上述两点特性称为短路运算。
--a&&b--,由于左侧表达式--a=0为假,&&表达式结果一定为假,不再计算b--,直接返回0;
0||c--,左侧表达式0为假不能确保||结果一定为假,仍需计算右侧表达式,故计算c--,此时引用c的原值然后将c自减,结果为3,因此||表达式结果为真,返回1。
最终d被赋值为1。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯