读书人

新手有关问题①,高手HELP///

发布时间: 2012-04-15 18:39:21 作者: rapoo

新手问题①,高手HELP///
#include <iostream>
using namespace std ;
class sum
{
public :
void fun(int a=2,int b=3) ;
private:
int c;

} ;

void sum::fun(int a,int b)
{
c=a+b;
cout < < "a+b " < < "= " < <c < <endl ;

}

int main()
{
int a,b;
sum mysum ;
mysum.fun(a,b); ////....2个程序.就这里不一样.


}
答案:a+b=-1717986920


//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std ;
class sum
{
public :
void fun(int a=2,int b=3) ;
private:
int c;

} ;

void sum::fun(int a,int b)
{
c=a+b;
cout < < "a+b " < < "= " < <c < <endl ;

}

int main()
{
int a,b;
sum mysum ;
mysum.fun(); //....2个程序.就这里不一样.


}

答案:a+b=5

////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////

我想问的是这2个程序主函数带了实参..和没带实参..为什么答案会不一样。.
不是上面的类里面已经有了a和b的值了吗??.....为什么第一个程序没有得到
类里面a和b的值呢??
高手...HELP...~!~



[解决办法]
第一个是要把main里的a,b传给函数,而a,b没初始化,值是随机的
[解决办法]
楼主要弄清楚,形参和实参。第一个里面的形参a,b和实参a,b是完全不同的。你可以把它们换成任意的变量名,如x,y
[解决办法]
第一个调用局部变量ab,和是随机的
第二个mysum.fun()用了其缺省参数,就为5
[解决办法]
a,b的值是随机的。mysum.fun(a,b); 这样传值是有问题的哦,a,b都没值

[解决办法]
第一个程序中的实参a,b的值是随机的,所以a+b的值也是随机的。而第二个程序中的a,b是调用函数中的默认参数
[解决办法]
楼上的正解!1JF
[解决办法]
这样的代码
int a,b;
如果没有初始化,编译器会给a,b赋一个初始值,编译器不同,赋的初始值也不同
有些编译器给赋一些负数
所以,
int a,b
fu(a,b) //这里的a和b有可能是些很大的负数值

而fu() //这里没有填写参数,函数会自动调用默认值,也就是2和3

读书人网 >C++

热点推荐