C++小疑问
请看下面两个小程序:
[code=C/C++][/code]
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<a*b<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b;
c=a*b;
cout<<c<<endl;
return 0;
}
第一个程序没有用C来存放a*b的值,那么a*b被放到哪里了呢???
[解决办法]
可以不放内存里.
直接把 a 和 b 相加后的寄存器 push 到堆栈里就传给 operator<< 函数了.
详见汇编
[解决办法]
a*b执行后,会生成一个无名子的临时对象,把a*b的结果放到这个无名子的临时对象内,当程序结束后,就会有系统释放掉这个临时对象