【发布时间】:2020-03-08 17:21:30
【问题描述】:
我是一名初学者 C++ 程序员,这是我的家庭作业之一,除了最后一个问题,当用户输入一个数字除以零时,它应该说“错误”,但我得到了 inf作为我的输出。我做了一个 if 语句,说 if (num1 == 0 || num2 == 0) 它会说错误,但事实并非如此!
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double num1 {};
double num2 {};
char input {};
double result {};
cout << "Enter your calculations: ";
cin >> num1 >> input >> num2;
cout << fixed << setprecision(2);
if (input == '+') {
result = num1 + num2;
} else if (input == '-') {
result = num1 - num2;
} else if (input == '/') {
result = num1 / num2;
} else if (input == '*') {
result = num1 * num2;
} else if ( num1 == 0 || num2 == 0 )
cout << "error";
cout << "Answer: "<< result << endl;
}
【问题讨论】:
-
除法前需要检查零。
-
另外你应该只测试
num2。将零除以非零数是明确定义的,并得到零。 -
else if ( num1 == 0 || num2 == 0 )仅在上述条件均不成立时才被检查。else if (input == '/')进入,所以零校验用例不运行。 -
有趣的事实:
else if (condition) {}实际上是else { if (condition) {} }更多阅读:Is “else if” a single keyword? -
@user4581301 有趣的事实:它不是。那是另一种写法,但它在解析器中需要不同的路径才能被理解。
标签: c++ if-statement zero