鱼C论坛

 找回密码
 立即注册
查看: 2722|回复: 5

[已解决]a=0,b=0,c=0;a++&&b++||c++; 结果为什么是a=1,b=0,c=1;

[复制链接]
发表于 2018-3-6 12:40:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wz0526z 于 2018-3-6 12:42 编辑

# include <stdio.h>

int main(void)
{int a,b,c;
a=0,b=0,c=0;
a++&&b++||c++;
   printf("a=%d,b=%d,c=%d\n",a,b,c);
   return 0;
}

结果为什么是a=1,b=0,c=1;
最佳答案
2018-3-6 12:44:41
关键在这一句
a++&&b++||c++;
等价于
(a++&&b++) || c++;
执行时,先a&b,此时a为0,并执行a++
由于逻辑短路,作为为假,所以不管右侧,所以a为1,b为0
然后执行或的右侧c++,c自增1,变为1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-6 12:44:41 | 显示全部楼层    本楼为最佳答案   
关键在这一句
a++&&b++||c++;
等价于
(a++&&b++) || c++;
执行时,先a&b,此时a为0,并执行a++
由于逻辑短路,作为为假,所以不管右侧,所以a为1,b为0
然后执行或的右侧c++,c自增1,变为1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 22:35:15 | 显示全部楼层
BngThea 发表于 2018-3-6 12:44
关键在这一句
a++&&b++||c++;
等价于

a++不是先a赋值吗?怎么最后会为1?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 22:46:42 From FishC Mobile | 显示全部楼层
执行&&之后已经a已自增1了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 22:56:23 | 显示全部楼层
SHARK_8 发表于 2018-3-7 22:46
执行&&之后已经a已自增1了

谢谢,已经明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 08:53:32 | 显示全部楼层
wz0526z 发表于 2018-3-7 22:35
a++不是先a赋值吗?怎么最后会为1?

后置++是先拿出值来处理,最后自增
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-29 11:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表