为什么要打印?(C语言)

为什么要打印?(C语言),c,loops,printing,while-loop,C,Loops,Printing,While Loop,为什么下面的代码运行while循环?我认为“期中=学期”是一项任务,不是一个条件?请解释一下。谢谢 #include <stdio.h> main () { int mid = 4, term = 4; while ( mid = term) printf("%d\n", --term); } #包括 主要() { int mid=4,term=4; while(期中=学期) printf(“%d\n”,--术语); } 赋值的结果就是值。因此,表达式的

为什么下面的代码运行while循环?我认为“期中=学期”是一项任务,不是一个条件?请解释一下。谢谢

#include <stdio.h>

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

    while ( mid = term)
    printf("%d\n", --term);
}
#包括
主要()
{
int mid=4,term=4;
while(期中=学期)
printf(“%d\n”,--术语);
}

赋值的结果就是值。因此,表达式的计算结果为
4
或非零,因此在C中,
TRUE
,因为表达式的计算结果为TRUE

基本上,你说的是
mid=4


由于任何不为零的int在条件语句中返回true,while将循环。

mid=term
是一个计算为
term
的表达式。因此,while循环将一直运行到
term=0
赋值和测试都发生在“
while
”循环中,因此在这种情况下,
printf()
执行四次。

赋值也是包含一个值的表达式:它们指定的值
mid=0
是一个计算为
0
(因此为假)的表达式。

表达式
mid=term
在赋值后实际计算为
mid
的值。因此,正在评估的是
,而(4)
。由于所有非零整数都被解释为
true
(这是一种简化),while循环将在
term!=0

您将
术语
指定给
mid
,然后测试
mid
的真实性
mid
无论何时为非零都是真实的。当
term
(因此
mid
)减小到等于0时,循环终止,这是错误的。

您将
term
的值赋给
mid
,然后
while
检查
mid
的值,该值计算为true,直到达到0为止

这应该输出:

3
2
1 
0

它不会永远循环,只有4次。当
循环时,分配将在
的每次迭代中进行评估,由于
术语
在循环中递减,因此当
术语==0