&& 条件作为||在 c 中做 while 循环

&& condition working as || in do while loop in c

AND (&&) 条件在此代码中计算为 OR(||)。例如,当用户输入数字 67 时,输出是 12 但是当我将 && 替换为 || 输出为 42.

#include<stdio.h>

int main()
{
    int a,b,max,lcm;

    printf("Enter 2 numbers: ");
    scanf("%d %d", &a, &b);

    if(a>b)
    {
        max=a;
    }
    else
    {
        max=b;  
    }

    do
    {
        max++;
    } while(max%a!=0 && max%b!=0);

    lcm=max;
    printf("LCM of %d and %d is %d\n", a,b,lcm);

    return 0;
}

不,&& 条件作为 and 条件起作用,正如它应该的那样。当您输入 67 时,当 max12 时,max%a 计算为 0。此时 max%a != 0 的计算结果为 false (false && true == false),max%a != 0 && max%b != 0 的计算结果为 false,循环退出。但是,max%a != 0 || max%b != 0 的计算结果为 true(对于 12max 和 [=13= 的 bmax%b5 ], false || true == true), 所以循环继续。

我会将 do {..} while (...); 循环更改为:

while (1)
{
   max++;
   if ( max%a == 0 && max%b == 0 )
   {
      break;
   }
} 

至少对我来说更容易理解。