为什么打印? (C语言)

时间:2011-07-14 16:29:54

标签: c loops printing while-loop

为什么以下代码运行while循环?我认为“mid = term”是一项任务,而不是条件?请解释。感谢。

#include <stdio.h>

main ()
{
    int mid = 4, term = 4;

    while ( mid = term)
    printf("%d\n", --term);
}

8 个答案:

答案 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