我想知道当我使用算术运算符时内存中会发生什么:
int i;
i = 5 + 3;
值 5 和 3 是否会自动临时放入堆栈(就像为它们自动创建一些静态变量一样)?我想它们需要存在于某个地方才能进行添加,那么在哪里呢?
当涉及函数调用时会发生什么?
i = 5 + f(3);
传递给 f 的参数 3 是否存储在某处?那么 f 的返回值呢(假设 f 返回一个 int)?
非常感谢,
最佳答案
您的第一个示例将在编译时进行评估(请参阅 http://en.wikipedia.org/wiki/Constant_folding ),所以让我们忽略它。
在类似 i = f(3) + g(5)
的情况下,编译器有很多选择来实现它,具体取决于您正在使用的特定平台。它可能会根据需要将内容放入寄存器、堆栈,甚至其他地方。
关于c - 像算术运算符的操作数这样的临时值是否放在堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795032/