读书人

C++小疑问,该怎么处理

发布时间: 2012-04-01 17:23:46 作者: rapoo

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的结果放到这个无名子的临时对象内,当程序结束后,就会有系统释放掉这个临时对象

读书人网 >C++

热点推荐