Excel 的if
函数接受三个参数,一个条件、一个 if-true 值和一个 if-false 值。Excel 是计算出所有三个参数的值,还是只计算出条件的值和相应的结果?
澄清:我不知道会的结果是什么if
,我想知道它是否在计算函数结果之前计算所有参数的值。
这相当于询问if
函数是使用惰性求值还是严格求值。例如,下面的伪代码:
x = 5;
print x>2 ? "Bigger" : "Smaller" + 1/0
将在具有完全严格评估的语言中引发除零异常,因为它会评估1/0
,即使运算符不需要结果?:
。
在惰性求值语言中,?:
运算符x>2
甚至会在决定要求值的表达式之前求值。
问题在于,在 Excel 中,会产生一个可以存在于表达式中1/0
的合法值(恰好是)。#DIV/0!
因此,简单地调用=if(true,1,1/0)
并不能显示 Excel 是否正在评估1/0
。