【发布时间】:2013-02-09 18:09:27
【问题描述】:
这是:
if(x == a || b){//do something}
同:
if(x == a || x == b){//do something}
?
我认为不是,因为在第一种情况下,我们评估 x 是否等于 a 以及 b 是真还是假。
在第二种情况下,我们评估 x 是否等于 a 以及 x 是否等于 b。我知道在lazy evaluation 中,如果 x 等于 a,我们不会进一步评估。
但有人认为,在第一种情况下,我们会问 x 是等于 a 还是 b,所以我想确定一下。
【问题讨论】:
-
"I think it is not"- 你是对的,你的推理也是。 -
自己测试比提出问题更容易。
-
@Nile 一个测试告诉你一个实现是如何做到的。查阅标准(或 Stack Overflow)会告诉您每个实现应该如何表现。
-
在第一次检查中需要一个人挠头的正确代码可能是一个好主意。
-
C 还是 C++?不要同时标记两者。
标签: c++ lazy-evaluation