显式算术,编译器会处理它吗?

时间:2015-05-14 01:39:36

标签: c compilation

有时我发现通过明确算术来理解代码(对于将来或其他人来说)更容易理解。例如。如果您从其他地方添加3个值,而不是单个幻数+6,则写入1 + 2 + 3。

效率低下还是编译器会适当地优化/减少它?我在考虑C,但总的来说这是值得担心的事情吗?

1 个答案:

答案 0 :(得分:5)

是。所有有能力的C编译器将尽可能地执行constant folding优化,用结果替换常数数学表达式。在大多数编译器中,即使禁用了优化(例如,-O0),也会应用此类优化。 Here's an example

此行为不限于C;大多数其他编译语言也将执行此类优化。解释语言通常不会,因为那里的好处不那么引人注目,并且其中一些可能具有语义,这可能使得不断折叠不安全的优化(例如,允许在内置类型上覆盖基本操作)。