&& 条件作为||在 c 中做 while 循环
&& condition working as || in do while loop in c
AND
(&&
) 条件在此代码中计算为 OR
(||
)。例如,当用户输入数字 6 和 7 时,输出是 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
条件起作用,正如它应该的那样。当您输入 6
和 7
时,当 max
为 12
时,max%a
计算为 0
。此时 max%a != 0
的计算结果为 false
(false && true == false
),max%a != 0 && max%b != 0
的计算结果为 false
,循环退出。但是,max%a != 0 || max%b != 0
的计算结果为 true
(对于 12
的 max
和 [=13= 的 b
,max%b
为 5
], false || true == true
), 所以循环继续。
我会将 do {..} while (...);
循环更改为:
while (1)
{
max++;
if ( max%a == 0 && max%b == 0 )
{
break;
}
}
至少对我来说更容易理解。
AND
(&&
) 条件在此代码中计算为 OR
(||
)。例如,当用户输入数字 6 和 7 时,输出是 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
条件起作用,正如它应该的那样。当您输入 6
和 7
时,当 max
为 12
时,max%a
计算为 0
。此时 max%a != 0
的计算结果为 false
(false && true == false
),max%a != 0 && max%b != 0
的计算结果为 false
,循环退出。但是,max%a != 0 || max%b != 0
的计算结果为 true
(对于 12
的 max
和 [=13= 的 b
,max%b
为 5
], false || true == true
), 所以循环继续。
我会将 do {..} while (...);
循环更改为:
while (1)
{
max++;
if ( max%a == 0 && max%b == 0 )
{
break;
}
}
至少对我来说更容易理解。