鱼C论坛

 找回密码
 立即注册
查看: 1109|回复: 4

[已解决]小白问题摸索不清楚。。

[复制链接]
发表于 2020-2-9 20:11:17 | 显示全部楼层 |阅读模式

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

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

x
7. 请说明逻辑与(&&)在下边表达式中起到的重要作用(这道题很经典,不要轻易看答案(⊙o⊙)哦 )]
count != 0 && sum/count
答:该表达式使用逻辑与(&&)来确保 sum/count 的除数不为 0
因为当 count 为 0 时,并不会导致 sum/0,因为根据短路求值的原则,&& 运算符在左侧为假的情况下,并不会计算右侧的表达式。(这个技巧放在实际开发中,逼格顿时嗷嗷的 )

这句表达式应该怎样理解?
count!= 0 是先把0取反为1 然后 count=1 返回值为1吗?
因为短路求值的原则,因为前面的值为1了,所以编译器不会对后面的关系表达式进行操作
这样理解对吗?

还有当count为0的时候,并不会导致sum/0  这个sum/0 是sum除以0吗? 还是sum=0

int a = 3, b = 3;
(a = 0) && (b = 5);
printf("a = %d,b = %d",a,b);

(a = 0) || (b = 5);
printf("a = %d,b = %d",a,b);

return 0;

这两个语句的话就理解的了,第一个逻辑与,因为第一个值返回0,后面关系表达式直接舍弃不进行赋值
第二个逻辑或,因为只要有一个值返回1,结果就为真,所以也不对后面的关系表达式进行赋值

总的来说就是不太理解,答案里面所描述的 sum/0是什么?
最佳答案
2020-2-10 10:04:23
count != 0 && sum/count就是count不等于0并且sum除以count,程序运行时会从这个条件的左边断判,如果你输入的值为0,根据短路求值原则,&&中前面为假,后面的 sum/count就不会进行运算了。就避免了sum除以0=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-9 20:56:57 | 显示全部楼层
我也是小白,我说下我的理解,如果count=0,它取反就是1,1不等0,左边为假,不执行,从而避免了sum/0;
同理,如果count不等于0,取反就是0,等式成立,继续向右进行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-9 21:09:08 | 显示全部楼层
飞翔巨人 发表于 2020-2-9 20:56
我也是小白,我说下我的理解,如果count=0,它取反就是1,1不等0,左边为假,不执行,从而避免了sum/0;
...

对的,后面一句说这样避免sum/0  这个是 sum除以0 还是 sum 等于 0 ,就是不确定sum/0是表示哪种意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 10:04:23 | 显示全部楼层    本楼为最佳答案   
count != 0 && sum/count就是count不等于0并且sum除以count,程序运行时会从这个条件的左边断判,如果你输入的值为0,根据短路求值原则,&&中前面为假,后面的 sum/count就不会进行运算了。就避免了sum除以0=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-10 10:26:10 | 显示全部楼层
Sun正气 发表于 2020-2-10 10:04
count != 0 && sum/count就是count不等于0并且sum除以count,程序运行时会从这个条件的左边断判,如果你输 ...

理解了,昨天有点穿牛角尖了,隔天重新思考一下就明白整个语句的意思了,不过还是谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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