【发布时间】:2011-01-25 15:04:43
【问题描述】:
我想知道当我使用以下算术运算符时内存中会发生什么:
int i;
i = 5 + 3;
是否会临时自动将值 5 和 3 放入堆栈(例如自动为它们创建一些静态变量)?我想它们需要存在于某个地方才能进行添加,那么在哪里?
当涉及到函数调用时会发生什么?
i = 5 + f(3);
传递给 f 的参数 3 是否存储在某个地方?那么 f 的返回值(比如 f 返回一个 int)呢?
非常感谢,
【问题讨论】:
-
我认为这取决于目标架构,以及它的操作码是否支持立即值作为操作数。
-
确实,这取决于。但不仅如此,还有更多:编译器今天的感觉、
f的调用约定、月相、优化设置等。这是你不应该尝试的级别如果你珍惜时间和理智,那就比编译器更聪明。