注册 登录
编程论坛 C语言论坛

关于在条件中出现的赋值问题

_2hanhan 发布于 2023-09-23 13:28, 901 次点击
只有本站会员才能查看附件,请 登录

问一下,为什么第一个x=****的式子会让n不变,而第二个式子n会变成0
n变0我能理解,问题主要是:为什么第一条式子会让n不发生变化。
这是什么原理?
5 回复
#2
rjsp2023-09-23 13:48
形如 a && b,当 a 不成立时,整个表达式就必然不成立,所以不需要去 评估b
形如 a || b,当 a 成立时,整个表达式就必然成立,不需要去 评估b

详见:https://zh.
#3
rjsp2023-09-23 13:51
short-circuit evaluation
短路求值

lhs && rhs:
If the result of lhs compares equal to zero, then rhs is not evaluated at all (so-called short-circuit evaluation)
若 lhs 的结果比较等于零,则完全不求值 rhs (是谓短路求值)。

lhs || rhs:
If the result of lhs compares unequal to zero, then rhs is not evaluated at all (so-called short-circuit evaluation)
若 lhs 的结果比较不等于零,则完全不求值 rhs (是谓短路求值)。
#4
yiyanxiyin2023-09-23 18:37
第一个x=**** 中的m=a>b  是先判断a是否大于b, 然后将结果赋值给m, a>b, m为1,a<b, m为0, m为1才会执行&&后面的判断   a为5, b为6, 所有m为0, &&后面的不会执行
#5
_2hanhan2023-09-23 23:10
悟了!感谢大佬们!
#6
forever742023-09-24 08:56
按惯例马后炮:逻辑运算短路求值这种事应该在每一本教材中明示,不该等着学生自己悟啊。
1