柿子饼同学 发表于 2022-1-28 16:03:23

循环条件的写法问题

#include <bits/stdc++.h>
using namespace std;
int main(){
        int a, b;
        int r;
        scanf("%d%d", &a, &b);
        while(r = a % b){//这里的条件
                a = b;
                b = r;
        }
        printf("%d", b);
        return 0;
}
如上 , 是一个求最大公因数的程序 , 但是不理解 while(r = a % b) 这个条件 , 这不是赋值语句吗
那么 , 它什么时候是真 , 什么时候为假呢
求解释

ckblt 发表于 2022-1-28 16:06:48

a%b 不等于 0 的时候为真
a%b 等于 0 的时候为假

柿子饼同学 发表于 2022-1-28 16:18:57

ckblt 发表于 2022-1-28 16:06
a%b 不等于 0 的时候为真
a%b 等于 0 的时候为假

所以跟 r =没有关系是嘛{:10_277:}

ckblt 发表于 2022-1-28 16:21:34

r=除了赋值其他都没用

ckblt 发表于 2022-1-28 16:25:41

例子:

#include <stdio.h>

int main()
{
    int i = 0;
    printf("%d\n", i = 5); // 输出 5
    printf("%d", i); // 输出 5
   
    return 0;
}

柿子饼同学 发表于 2022-1-28 16:31:03

ckblt 发表于 2022-1-28 16:25
例子:

好嘞 , 谢谢

jhq999 发表于 2022-1-28 16:32:50

本帖最后由 jhq999 于 2022-1-28 16:35 编辑

看错了
页: [1]
查看完整版本: 循环条件的写法问题