|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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是什么?
count != 0 && sum/count就是count不等于0并且sum除以count,程序运行时会从这个条件的左边断判,如果你输入的值为0,根据短路求值原则,&&中前面为假,后面的 sum/count就不会进行运算了。就避免了sum除以0=0
|
|