无限循环的原因

时间:2014-10-30 10:12:32

标签: c sequence-points

signed char ch=5;
while(ch = ch--)
    printf("%d",ch);

我读了this。清楚地说明了语句和语句的结尾(;)是序列点。

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

2 个答案:

答案 0 :(得分:5)

您的代码应为

signed char ch=5;
while(ch--)
    printf("%d",ch);

因为ch--已经是一项任务。您已使用chch--重新分配到ch = ch--之前的值,因此ch--无效,并且您在每次迭代时获得相同的值。

答案 1 :(得分:1)

这应该适合你:

#include <stdio.h>

int main() {

    signed char ch=5;

    while(ch--)
        printf("%d\n",ch);



    return 0;

}