xcd*_*n05 7 c++ windows return function
如果我有一个程序:
#include <iostream>
using namespace std;
int TestIntReturn(int &x, int &y)
{
x = 1000;
y = 1000;
return x+y;
}
int main()
{
int a = 1;
int b = 2;
cout << a << " " << b << endl;
TestIntReturn(a,b);
cout << a << " " << b << endl;
}
Run Code Online (Sandbox Code Playgroud)
TestInReturn(a,b)由于它未被使用,返回值会发生什么变化?
Jer*_*fin 11
既然你在谈论Windows,我们将假设一个x86处理器.
在这种情况下,返回值通常在寄存器EAX中.由于您没有使用它,因此将忽略该值,并在下次执行将某些内容写入EAX时执行的某些代码时覆盖该值.
在相当多的情况下,如果一个函数没有其他副作用(只需要输入并返回一些结果),编译器将能够找出你何时没有使用结果,而只是不调用该函数.
在你的情况下,该函数有一些副作用,所以它必须执行这些副作用,但可能会删除代码来计算总和.即使它没有被删除,它也可能会发现所添加的内容实际上是两个常量,因此在任何情况下它都不会在运行时实际计算结果,只是做一些类似的事情mov EAX, 2000来产生返回值.
它被丢弃了 ; 表达式TestInReturn(a,b)是丢弃值表达式.丢弃一个int没有任何效果,但是丢弃volatile int(或任何其他挥发性限定类型)可具有的从存储器中读出的效果.
| 归档时间: |
|
| 查看次数: |
2597 次 |
| 最近记录: |