c语言,为什么最小公约数输入后为0

#include

int main()
{ int m,n,t,a,r;
scanf("%d%d",&n,&m);
if(m>n){t=m;m=n;n=t;}
r=m%n;
while(r!=0)
{n=m;m=r;r=n%m;}
printf("%d",r);
return 0;

}

while循环退出的条件是r == 0,你后面刚好又打印了r的值,肯定打印出来的是0