Math 编译器执行哪些算术运算(如果有)?

Math 编译器执行哪些算术运算(如果有)?,math,language-agnostic,Math,Language Agnostic,给定一个操作,如int myNum=5+(5*9)或任何其他数学运算,此语句的哪些部分(如果有的话)由编译器执行?哪些是在运行时执行的?显然,不断变化的变量不能在编译时简化,但某些操作可能会简化。编译器是否愿意做任何这样的简化(比如做上面的语句intmynum=50;)?这在负载、速度或任何其他客观测量方面是否重要 细节是这里的关键,请尽可能地阐述你的想法 我的意思是,这适用于任何算术运算。请检查 常量折叠是在编译时简化常量表达式的过程。常量表达式中的术语通常是简单的文字,如整数2,但也可以是值

给定一个操作,如
int myNum=5+(5*9)
或任何其他数学运算,此语句的哪些部分(如果有的话)由编译器执行?哪些是在运行时执行的?显然,不断变化的变量不能在编译时简化,但某些操作可能会简化。编译器是否愿意做任何这样的简化(比如做上面的语句
intmynum=50;
)?这在负载、速度或任何其他客观测量方面是否重要

细节是这里的关键,请尽可能地阐述你的想法

我的意思是,这适用于任何算术运算。

请检查


常量折叠是在编译时简化常量表达式的过程。常量表达式中的术语通常是简单的文字,如整数2,但也可以是值从未修改过的变量,或显式标记为常量的变量。

这取决于编译器--您是否想到了一个特定的编译器?我熟悉的一个如何,LLVM@zsnow:那么您就可以在LLVM在线演示上轻松检查自己了: