用递推方式求两个正整数的最大公约数的程序有一个地方不懂,请高手看补充:

来源:百度知道 编辑:UC知道 时间:2024/05/04 06:14:23
程序如下:
#include <stdio.h>
int gcd(int m,int n);
void main()
{int num1,num2,t;
printf("input num1,num2:");
scanf("%d%d",&num1,&num2);
if(num1,num2)/*这是我有困惑的地方,它是怎样判断两个数的大小的,这应该是一个逗号表达式吧,改成:if(num1<num2) {t=num1;num1=num2;num2=t;},我知道是什么意思,但书上是那样写的,为什么啦?
num1=num1+num2,num2=num1-num2;num1=num1-num2;
printf("%d\n",gcd(num1,num2));
getch();
}
int gcd(int m,int n)
{int r;
while((r=m%n)!=0)
{m=n;
n=r;
}return n;
}

num1=num1+num2,num2=num1-num2;num1=num1-num2; 这行代码是交换的意思
相当于t=num1;num1=num2;num2=t;
我觉得if(num1,num2)这行有没有都可以 这个逗号表达式 只要输入不是0 运行的结果都是真 都要执行if语句的
即使不交换num1和num2的值也可以运行出正确的结果