"If statement"删除了,c代码运行没有问题,请问是什么原因?

"If statement" deleted, c code runs without problem, what is the reason?

删除if语句后,代码运行没有问题。这是什么原因?此代码给出用户应输入的两个数字(m 和 n)的最大公约数 (GCD)。

#include <stdio.h>
int main() {
    int m, n, r;
    scanf("%d,%d", &m, &n);

    if (m < n) {
        r = m;
        m = n;
        n = r;
    }

    do {
        r = m % n;
        m = n;
        n = r;
    } while (r != 0);

    printf("%d\n", m);
    return 0;
}

m是否大于n并不重要。如果 m 最初小于 n 那么在 do-while 循环的第一次迭代中

do {
    r = m % n;
    m = n;
    n = r;
} while (r != 0);

m 将大于 n 由于语句

    m = n;

例如,我们假设 m 等于 2 并且 n 等于 10。所以 r 等于 m % n 将等于 2 实际上这些语句

m = n;
n = r;

在循环的第一次迭代中交换 mn

虽然 if() 语句没有任何问题... 唯一可能出错的是误用 scanf(),除此之外你的代码运行得非常好