While循环C ++中的指令非法

时间:2018-10-05 14:14:06

标签: c++ while-loop numbers greatest-common-divisor

我被分配去编写一个简化有理数的程序。我想做的是计算gcd,然后将数字除以gcd。但是程序返回一个非常奇怪的错误。

代码:

void read_rational(int& num, int& den) {
    char bar;
    if (cin >> num >> bar >> den) {
        cout << "hi";
        int a = num;
        int b = den;
        while (b != 0) {
            int r = a%b;
            a = b;
            b = r;
        }
        num /= b;
        den /= b;
    }
}

INPUT: 10/2  OUTPUT: Illegal instruction (core dumped)
INPUT: 90/8  OUTPUT: Illegal instruction (core dumped)

我尝试注释掉脚本的一些内容。仅当存在while循环时,该程序才似乎崩溃。但是我看不出这是怎么回事。

1 个答案:

答案 0 :(得分:9)

实际上,问题是while循环。完成后,b实际上为0,因此之后的除法会引发这些错误。 我认为您想要的是a而不是b