我希望变量"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
。此外,您不需要从函数返回任何东西,因为您不使用结果。
- 一个函数只能返回一个变量
-
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里面的不是它外面的。你将它重新声明为一个局部变量,它会在你返回