int evens(int x,int y);
int pdiv(int x,int y,int z);
void main(void)
{
clrscr();
cout<<"Enter the number x an y";
int x,y;
cin>>x>>y;
evens(x,y);
getch();
}
int evens(int x,int y)
{
cout<<"Even Numbers between x and y are"<<endl;
for (int z=x;z<y;z++)
{
if(z%2==0) cout<<z<<" "<<pdiv(z,x,y);
}
return 0;
}
int pdiv(int x,int y,int z)
{
cout<<"Positive divisors of the given number are"<<endl;
for(int a=y;a<=z;a++)
{
if(x%a==0)
cout<<a<<" ";
}
}
在上述计划中,每当我在pdiv(z,x,y)
函数中evens(x,y)
使用evens(x,y)
中 x 和 y 的值时开始改变。如果我不在pdiv()
中拨打evens()
,则不会发生这种情况。
我被告知函数是独立的,他们不应该改变其他函数的值,我花了几个小时在这个程序上,我无法弄清楚我做了什么错。
为什么我的函数不像独立函数那样?
答案 0 :(得分:2)
C ++中的函数是“独立的”,它们不能更改另一个函数中的变量值,除非您通过引用传递参数或执行一些黑客攻击(可能您不这样做)。但是,您可能希望改进几件事情:
pdiv
应该返回一些int
结果
您调用pdiv(z,x,y)
的方式有点误导,因为在函数内部,您将使用x
的{{1}}变量z
。在C ++中,您不按名称传递参数,顺序很重要。如果你不改变变量的含义并调用evens()
,那就更清楚了。
在pdiv(x,y,z)
中,您应为变量main()
和x
分配一些初始值。
为什么你甚至认为变量正在发生变化?