Sem*_*kül 2 c syntax loops comma-operator
我这里有一个无限循环,但为什么呢?
int end = 5;
for(int i = 0; i < end, printf("at condition i=%d\n",i); ++i)
{
printf("inside i=%d\n",i);
}
Run Code Online (Sandbox Code Playgroud)
逗号运算符的左操作数被计算为void表达式,逗号运算符的求值结果是右操作数的结果.因此,for循环的"if"部分会查看printf高于零的结果,这意味着它永远不会结束.
您可以通过交换来修复它:
int end = 5;
for(int i = 0; printf("at condition i=%d\n",i), i < end; ++i)
{
printf("inside i=%d\n",i);
}
Run Code Online (Sandbox Code Playgroud)
但更好的是不要这样做.它不是很易读.