【问题标题】:&& condition working as || in do while loop in c&& 条件为 ||在c中做while循环
【发布时间】:2015-10-08 18:33:21
【问题描述】:

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;
}

【问题讨论】:

    标签: c comparison-operators


    【解决方案1】:

    不,&amp;&amp; 条件就像 and 条件一样工作,就像它应该的那样。当您输入 67 时,当 max12 时,max%a 的计算结果为 0。此时max%a != 0 的计算结果为false (false &amp;&amp; true == false),max%a != 0 &amp;&amp; max%b != 0 的计算结果为false,循环退出。但是,max%a != 0 || max%b != 0 的计算结果为 truemax%b512b7bfalse || true == true),所以循环继续。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-02-14
        • 2015-01-01
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-21
        相关资源
        最近更新 更多