main函数将使用int值调用Square(),其中它将与自身相乘并返回到main。但是,如果未提供任何参数,则将递增并使用先前的int值。如果提供值为5,则返回25,然后我不添加参数并再次调用该函数,它将返回5 + 1的平方,所以我将得到36,然后如果下一个调用没有参数,我将获得7的平方,即49。
这里我声明了static int lastN来接受第一次调用的n值。如果下一个调用没有传递给square()的参数,则unsigned int n将为-1和lastN,它存储参数n的前一个值(在本例中为5),则lastN将自动递增并且square的lastN返回。但是,似乎静态变量不起作用,我一直没有参数得到1,我不太确定如何使用静态变量获取前一个值。
#include <iostream>
using namespace std;
int square(unsigned int n=-1)
{
static int lastN;
if(n==-1)
{
lastN+=1;
return (lastN)*(lastN);
}
lastN=n;
return n*n;
}
void main () {
cout <<"Value: "<< square(5) << endl;
}
到目前为止,答案是谢谢。好了,事情清楚,我的导师告诉我使用-1作为默认值,这样如果没有参数传递给函数,那么默认值肯定不是unsigned int。如果不是,如果我使用像10这样的正值作为默认值,那么当我的教师传入10作为参数来测试代码时会出现问题。如果我输入5,lastN将是5,并且方形25返回,那么对于下一个调用我不会将任何参数放入函数调用中为int square(),
void main () {
cout <<"Value: "<< square() << endl; //no parameter
}
而不是将前一个值增加到6并返回6的平方,我得到
价值:1
按任意键继续......
我正在启动c ++所以我不太确定使用静态变量或任何其他类型,比如通过值或引用将变量传递给函数