【发布时间】:2019-02-09 22:33:34
【问题描述】:
我刚刚看到了类似的东西:
return (m(s1 + 1, s2) || m(s1 + 1, s2 + 1));
|| 在return 语句中的含义是什么?
这里,m 是一个函数; s1 和 s2 是字符串。
【问题讨论】:
-
那里的意思和其他地方的意思一样。它是逻辑或运算符。
-
与其说是“返回”,不如说是评估该表达式然后返回它的结果。
-
这意味着return语句返回
0或1。如果对m的左侧调用返回1(或任何其他非零值),则不会进行右侧调用(结果将为1);如果左侧调用返回0,则进行右侧调用,如果RH调用返回0,则返回值为0,否则返回1。这是||运算符的正常短路行为。 -
@JonathanLeffler 你不能指望 1,它可能是其他一些非零值。
-
@nicomp:什么不能算1?该问题被标记为“递归”,并且“
m”被指定为函数,因此m很可能是一个递归函数,而这个return语句在m中。函数中可能还有其他return语句;不能保证这些返回0或1因为我们还没有看到它们。但是,这个return语句只会返回0或1,因为||运算符仅计算为0或1。