为什么这个循环无限次运行?for循环中的逗号分隔条件

ava*_*ish 1 c

程序代码:

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

上面的循环被无限次执行。

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

mid*_*dor 5

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

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

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

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

这是一个无限循环。