首页 > 解决方案 > 我不明白为什么这个 for 循环以 1 结尾。为什么不是 0 或 -1 或其他

问题描述

我认为这将是一个无限循环,因为 i 的值递减。但是循环在返回 1 时停止。为什么?

        int i ;
        for (i = 5; i; i--){
            printf("%d\n",i);
        }
        return 0;
    }



标签: cfor-loop

解决方案


在 C 中,条件中使用的任何非零整数或非空指针的计算结果为真,任何零值或空指针的计算结果为假。因此,例如:

if (5) {
    printf("This always executes.\n");
}
if (0) {
    printf("You will never see this.\n");
}

在你的情况下,循环是

for (i = 5; i; i--) {
    /* ... */
}

循环条件为i,意思是“循环whilei不为零,stop oncei变为零”。结果,一旦i下降到零,循环就会停止运行。这意味着您最后一次看到循环运行是 when i = 1,因为在那之后它下降到零。


推荐阅读