小白问题摸索不清楚。。
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是什么? 我也是小白,我说下我的理解,如果count=0,它取反就是1,1不等0,左边为假,不执行,从而避免了sum/0;
同理,如果count不等于0,取反就是0,等式成立,继续向右进行 飞翔巨人 发表于 2020-2-9 20:56
我也是小白,我说下我的理解,如果count=0,它取反就是1,1不等0,左边为假,不执行,从而避免了sum/0;
...
对的,后面一句说这样避免sum/0这个是 sum除以0 还是 sum 等于 0 ,就是不确定sum/0是表示哪种意思 count != 0 && sum/count就是count不等于0并且sum除以count,程序运行时会从这个条件的左边断判,如果你输入的值为0,根据短路求值原则,&&中前面为假,后面的 sum/count就不会进行运算了。就避免了sum除以0=0 Sun正气 发表于 2020-2-10 10:04
count != 0 && sum/count就是count不等于0并且sum除以count,程序运行时会从这个条件的左边断判,如果你输 ...
理解了,昨天有点穿牛角尖了,隔天重新思考一下就明白整个语句的意思了,不过还是谢谢你{:10_275:}
页:
[1]