【发布时间】:2018-04-08 15:18:18
【问题描述】:
我必须编写一个循环来执行一些数学函数并在你进行时累积答案。但是由于某种原因,我的返回值 currentNum 一直被返回为 0。我尝试在 switch 语句中将 currentNum 声明为某个 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;
}
}
【问题讨论】:
-
将签名改为引用
currentNum:int accumulate(double& currentNum, double num, char op){ -
@user0042 感谢回复,请问&或*会做什么?
-
currentNum是一个double,而你的函数返回一个int。 -
你应该把返回的值赋给
currentNum。 -
你也应该初始化你的变量。