0

我的任务是为 C++ 编程类修复一个充满错误的示例代码。该程序的设计目的是输入两个数字作为输入——第一个数字随后除以第二个数字——输出是余数。我已经解决了几乎所有的错误,但是我遇到了一个剩余错误(我可以收集)的问题,我似乎无法弄清楚。

#include <iostream>
using namespace std;

int main()
{
    int firstNumber; 
    double secondNumber;

    cout << "Please enter two whole numbers: ";
    cin >> firstNumber >> secondNumber;
    cout << firstNumber << " divided by " << secondNumber
         << " is " << (firstNumber / secondNumber) << endl
         << "with a remainder of " << (firstNumber % secondNumber) 
         << endl;
}

我得到的错误在第 13 行......“'int' 和 'double' 类型的无效操作数到二进制 'operator%'。

有关如何解决此问题的任何建议...?

4

2 回答 2

1

很多人都在谈论 C++ 中的 mod 运算符 (%) 如何仅适用于整数。有些人建议强制转换 secondNumber为 int,而另一些人则提到了适用于浮点数的 mod 操作,例如fmod.

解决此问题的更好方法是secondNumber在程序开头声明为整数。在处理整数除法(商余数)时,没有理由使用浮点数。您的问题定义似乎只为整数定义,所以我们应该只使用整数。

#include <iostream>
using namespace std;

int main() {
    int firstNumber, secondNumber;

    cout << "Please enter two whole numbers: ";
    cin >> firstNumber >> secondNumber;
    cout << firstNumber << " divided by " << secondNumber
         << " is " << (firstNumber / secondNumber) << endl
         << "with a remainder of " << (firstNumber % secondNumber) 
         << endl;
    return 0;
}
于 2015-02-02T20:49:20.830 回答
0

(firstNumber % secondNumber)导致您的错误,因为%仅适用于整数类型。如果需要,您可以secondNumber转换为和 int ,例如:

(firstNumber % static_cast<int>(secondNumber))

或者您可以使用fmod()函数

于 2015-02-02T18:52:43.820 回答