无限循环的原因

Gib*_*bbs 0 c sequence-points

signed char ch=5;
while(ch = ch--)
    printf("%d",ch);
Run Code Online (Sandbox Code Playgroud)

我看了这个.清楚地说明了声明和声明(;)的结尾是序列点.

所以我不明白为什么上面的那个运行无限时间并打印相同的值[5].

dam*_*ois 5

你的代码应该是

signed char ch=5;
while(ch--)
    printf("%d",ch);
Run Code Online (Sandbox Code Playgroud)

作为ch--已经是一个赋值.您之前重新分配ch给它之前的值ch--,ch = ch--因此ch--没有任何效果,并且您在每次迭代时获得相同的值.