【发布时间】:2011-01-04 04:46:49
【问题描述】:
为了方便和连贯,我倾向于使用常量表达式的数学函数(即log(x)/log(2) 而不是log(x)/0.3...)。由于这些函数实际上并不是语言本身的一部分,因此它们也没有在 math.h 中定义(仅声明),常量函数会在编译时预先计算,还是会在运行时被浪费地计算?
【问题讨论】:
-
我希望它们会被预先计算,但如果您说出您使用的是什么编译器以便人们可以实际检查,这将有所帮助。
-
当然,log(x) 在编译时不是常量表达式,除非 x 之前已被声明为常量并被赋予了值。编写没有编译器会评估的代码可能并不难,即使人类很容易这样做。
-
我已经很久没有遇到这个问题了,但是已经有一些实现允许在运行时指定浮点计算的一些细节。在这种情况下,任何依赖于它的东西都不能在编译时计算出来。
标签: c math compile-time