我必须编写一个执行某些数学函数的循环,并随时累积答案。但由于某种原因,currentNum,我的返回值,一直返回为0。我尝试将currentNum声明为switch语句中的一些num,认为它可以工作,因为currentNum是一个全局语句,但它也返回零;所以我试过这个,这也归零了?另外,我如何返回-1?当我返回-1时,控制台声明程序返回255而不是-1。
# include <iostream>
using namespace std;
int accumulate(double currentNum, double num, char op);
char op, x, X;
double currentNum, num;
int main(){
do{
cout << "Current: " << currentNum << endl;
cout << "Next operation: ";
cin >> op;
if(!(op == '+' || op == '-' || op == '*' || op == '/')){
cout << "Invalid operation!";
return -1;
}
cout << "Next Number: ";
cin >> num;
accumulate(currentNum, num, op);
}while(op != x || op != X);
}
int accumulate(double currentNum, double num, char op){
switch(op){
case '+':
currentNum = currentNum+num;
return currentNum;
cout << endl;
break;
case '-':
currentNum = currentNum-num;
return currentNum;
cout << endl;
break;
case '*':
currentNum = currentNum*num;
return currentNum;
cout << endl;
break;
case '/':
currentNum = currentNum/num;
return currentNum;
cout << endl;
break;
default:
// If the operator is other than +, -, * or /, error message is shown
cout << "Error! operator is not correct";
break;
}
}
答案 0 :(得分:0)
你应该传递数字的引用来累积函数。
int accumulate(double&amp; currentNum,double&amp; num,char op);
在定义accumulate fucntion时使用相同的语法。
答案 1 :(得分:-1)
也许你应该更清楚“回归”的含义是什么。返回值并不意味着它是更改的值。这意味着如果您愿意,可以将该函数视为此值。
例如,当您编写函数时
int foo(int a)
将 a 加倍,然后在主函数
中使用它int main() {
int a = 1;
foo(a);
cout << a;
}
你将获得1而不是2。
但是如果你改变了行
foo(a);
到
a = foo(a);
你会得到2。
要更改函数内部的值,您应该通过引用或指针传递它。也就是说,定义就像
void foo(int &a) / void foo(int *a)