c++ - while循环c++中的非法指令

标签 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 循环时崩溃。但我看不出它有什么问题。

最佳答案

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

关于c++ - while循环c++中的非法指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52667596/

相关文章:

c++ - 如何检查容器是否稳定

c++ - std::pair 期待 'type' ,但我给它一个类型

macros - 如何让Clojure的 `while`返回一个值

PHP 在 while 循环中计算两个值之间的差异

C++ 给出大量奇怪的答案(afaik 不会溢出)

java - Java中如何求两个给定整数之间的数字之和

c++ - 我的链表的 Erase() 函数中的错误

c++ - 用于探索由 c/c++ 编写的宏的 vim 插件

c++ - 只要用户输入,如何从用户那里获取整数?

java - 安卓 : How to get the value like 04 instead of the 4 during parsing string to Integer?