变量不计数,即使一遍又一遍地调用函数



我希望变量"minne"每次运行函数"multi"时向上计数一次,然后在主函数中将其打印回屏幕上。这不会发生,但它是卡住告诉我,我使用了函数"0"一次又一次。为什么呢?

//Multi
#include <iostream>

//Deklarerar variablar
int a,b,x, minne;
//Deklarerar funktioner
int multi(int a, int b);
int main(void)
{
  using std::cout;
  using std::cin; 
  while(1 < 2)
  {
  cout << "Ge mig ett nummer som du vill multiplicera:n"; 
  cin >> a;
  cout << "n Och ett till tack: n";
  cin >> b;
  multi(a,b);
  cout << "n Summan av dessa tal är: " << x << "n";
  cout << "You have called the function: " << minne << " times.n";
  }
  return 0;
}
int multi(int a, int b)
{
  x = a * b;
  int minne = minne + 1;
  return x, minne;
}

这是因为您声明了一个全局minne,并且函数multi还声明了一个局部minne,它隐藏了全局minne

用本地int minne隐藏全局minne -去掉int,只写minne = minne + 1,甚至只写++minne。此外,您不需要从函数返回任何东西,因为您不使用结果。

  1. 一个函数只能返回一个变量
  2. main()中的变量minne是0,因为它的作用域是全局的,并且它被自动初始化为0。multi()函数中的minne是本地的,每次调用该函数时都被"创建"(在函数退出时销毁)。

你要做的是:

//Multi
#include <iostream>

//Deklarerar variablar
int a,b,x;
static int minne;
//Deklarerar funktioner
int multi(int a, int b);
int main(void)
{
  using std::cout;
  using std::cin; 
  while(1 < 2)
  {
  cout << "Ge mig ett nummer som du vill multiplicera:n"; 
  cin >> a;
  cout << "n Och ett till tack: n";
  cin >> b;
  multi(a,b);
  cout << "n Summan av dessa tal är: " << x << "n";
  cout << "You have called the function: " << minne << " times.n";
  }
  return 0;
}
int multi(int a, int b)
{
  x = a * b;
  minne = minne + 1;
  return x;
}

你在重新定义它。

代替

int minne = minne + 1;

minne = minne + 1;

创建与全局变量同名的局部变量,会使全局变量的影子消失。

还有,return语句的意义是什么?你想通过做return x, minne;做什么?甚至都不用检查返回值

因为我在multi里面的不是它外面的。你将它重新声明为一个局部变量,它会在你返回

时递增然后消失

最新更新