【发布时间】:2022-02-02 10:46:27
【问题描述】:
我真的很难理解以下代码是如何工作的:
int x = -2;
while ( --x > -10 && (x -= 2)) {
printf ( " %d," , x ) ;
}
printf ( " %d" , x ) ;
output: -5, -8, -11, -12
我的意思是我得到了什么
while ( --x > -10)
output: -3, -4, -5, -6, -7, -8, -9, -10
和
while (x -= 2)
output: -> infinte loop
单独可以,但是它们如何与 and 运算符一起使用? 我的意思是对于“while (x -= 2)”,只有当 x = 2 时才满足条件,所以 while 循环如何才能结束而不是像只使用“while (x -= 2)”时那样无限循环?
【问题讨论】:
-
how can the while loop even end and not go infinite- 这正是&&运算符在原始循环中处理的内容。两个表达式都必须为真才能使循环继续。当其中任何一个为假时,循环终止。 -
-2-2 = -4 非零,因此 while 循环无限运行。事实上,对于任何正奇数或任何负数,它都应该无限运行。
-
"只有当 x = 2 时才满足条件":这是唯一不满足条件的情况。
-
@kiner_shah:
x == 2并非如此(这是问题底部所述的值)。 -
@bbbbbbbbbb,是的,我提到了正奇数。
x == 2绝对不是奇数。
标签: c while-loop infinite-loop logical-operators assignment-operator