为什么以下代码运行while循环?我认为“mid = term”是一项任务,而不是条件?请解释。感谢。
#include <stdio.h>
main ()
{
int mid = 4, term = 4;
while ( mid = term)
printf("%d\n", --term);
}
答案 0 :(得分:8)
作业的结果是价值。因此,表达式的计算结果为4
或非零,因此在C中为TRUE
。
答案 1 :(得分:5)
mid = term
是评估term
的表达式。所以while循环将一直运行到term = 0
。
答案 2 :(得分:2)
因为表达式的计算结果为真。
基本上,你是在说mid = 4
由于任何非零的int,在条件语句中返回true - while将循环。
答案 3 :(得分:1)
表达式mid = term
实际上在赋值后计算为mid
的值。那么,正在评估的是while(4)
。由于所有非零整数都被解释为true
(这是一种简化),while循环将与term != 0
一样长。
答案 4 :(得分:0)
分配和测试都发生在“while
”循环中,因此printf()
在这种情况下执行四次。
答案 5 :(得分:0)
赋值也是保存值的表达式:它们赋值的值。 mid=0
是一个表达式,可以逃避0
(因此为假)。
答案 6 :(得分:0)
您将term
分配给mid
,然后测试mid
的真相。只要非零,mid
就是真实的。当term
(因此mid
)递减到等于0时,循环终止。这是假的。
答案 7 :(得分:0)
您要将term
的值分配给mid
,然后while
会检查mid
的值,其值为true,直到达到0.
这应输出:
3
2
1
0