处理无效的操作数错误

时间:2015-02-02 18:30:29

标签: c++ operands

我的任务是修复一个充满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'到二进制'运算符%'的操作数无效。

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

2 个答案:

答案 0 :(得分:1)

很多人都在谈论C ++中的mod运算符(%)如何只对整数有效。有些人建议将secondNumber转换为int,而其他人则提到了对fmod等浮点数有效的mod操作。

解决此问题的更好方法是在程序开头将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;
}

答案 1 :(得分:0)

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

(firstNumber % static_cast<int>(secondNumber))

或者您可以使用fmod()功能