2

请看这段代码:

#include <iostream>
using namespace std;

class Ratio
{
    public:
        Ratio(int a=0, int b=1) : num(a), den(b) {}
        Ratio& operator/=(const Ratio&);
        void print() {cout << num << "/" << den << endl;}
    private:
        int num, den;
};


Ratio& Ratio::operator/=(const Ratio& r)
{
    num*=r.den;
    den*=r.num;
    return *this;
}

int main()
{
    Ratio x(1,2), y(2,5);
    y/=x;
    y.print();
}

执行这段代码后,(y)应该是5/4,我亲手计算了好几次!但是在打印 (y) 后的输出中,它显示 4/5!它不应该被它颠倒!

我的代码哪里出了问题?真的我检查了好几次,似乎没有任何问题!这是一个家庭作业:)

4

2 回答 2

6

你是如何决定它应该是 5/4 的?(2/5) / (1/2) = 4/5,这是正确的结果。当您期望 5/4 时,也许您正在计算 x/=y。

于 2012-04-11T08:21:19.207 回答
2

y/=xy = y/x与which is 2/5 / 1/2which is相同2/5 x 2/1=4/5

于 2012-04-11T08:22:25.633 回答