首页 > 解决方案 > 为什么这个循环会无限运行?for循环中的逗号分隔条件

问题描述

程序代码:

int main() 
{ 
    int i; 
    for (i = 0; i < 0, 5; i++) 
        printf("%d ", i); 
    return 0; 
} 

上面的循环无限次执行。

是什么i<0,5意思,如何评估?

标签: c

解决方案


根据运算符优先级,这被解释为(i < 0), 5。逗号运算符评估所有语句,但丢弃除最后一个之外的值。因此,出于实际目的,循环读取为

for (int i = 0; 5; ++i) {...}

因为非零值true在 C/C++ 中被解释为,这等价于:

for (int i = 0; true; ++i) {...}

这是一个无限循环。


推荐阅读