如何使用默认参数从上一个函数调用中获取值?

时间:2014-06-19 11:08:28

标签: c++ function static

如何运作

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 ++所以我不太确定使用静态变量或任何其他类型,比如通过值或引用将变量传递给函数

0 个答案:

没有答案