为了评估乘法,您必须评估第一项,然后是第二项,最后将这两个值相乘。
假设每个数字乘以 0 都是 0,如果第一项的评估返回 0,我希望整个乘法被评估为 0,而不评估第二项。
但是,如果您尝试此代码:
var x = 0 * ComplexOperation();
尽管我们知道 x 为 0,但仍调用函数 ComplexOperation。
优化的行为也将与仅在第一项被评估为真时才评估第二项的布尔运算符“&&”一致。('&' 运算符在任何情况下都会评估这两个术语)
我测试了这种行为,C#
但我想几乎所有语言都是一样的。