即时学习功能,我一直试图从我的功能中调用我的最后一个总值(所以标记为&#34的总数;到目前为止总数为#34;),当进行for循环时(打印出36)当使用8作为测试号码时,在我的主要功能中再次打印36,在#34;你的总数是"
据我所知,它不打印36因为在函数中我将total视为局部变量而我认为我需要将其用作全局或静态但我不确定
当我试图让它成为一个静态的时候我不确定我做得对,我在定义它们时在我的总变量前面写了静态
#include <iostream>
using namespace std;
int sum(int count);
int main()
{
int count;
double num, total;
cout << "Please enter a number: ";
cin >> num;
for (count = 1; count <=num; count = count + 1)
{
sum(count);
}
cout << "Your total is: " << total << endl;
return 0;
}
int sum(int count)
{
double total;
total = total + count;
cout << "Current number: " << count << endl;
cout << "Total so far: " << total << endl;
}
答案 0 :(得分:3)
total
在main()
和sum()
中未初始化,因此您获得的任何结果都是不确定的。
事实上,total
内的sum()
位于sum()
的本地,而total
中的main()
位于main()
的本地。对sum()
所做的任何更改total
都不会影响total
中的main()
。
您应该将sum()
更改为total
从main()
作为指针/引用传递的输入参数,以便sum()
可以修改其值:
#include <iostream>
using namespace std;
void sum(double &total, int count);
int main()
{
int count, num;
double total = 0.0;
cout << "Please enter a number: ";
cin >> num;
for (count = 1; count <= num; ++count)
{
sum(total, count);
}
cout << "Your total is: " << total << endl;
return 0;
}
void sum(double &total, int count)
{
total += count;
cout << "Current number: " << count << endl;
cout << "Total so far: " << total << endl;
}
答案 1 :(得分:1)
total
中的{p> main()
和total
中的sum()
是不同的变量,因为它们具有不同的块范围。
int sum(int count) {
// such a silly pass-through implementation if you want to calculate "total"
// do something with count
return count;
}
// in main
double total = 0;
total += sum(count);