Adn*_*nan 4 c programming-languages comma while-loop
编1:
#include<stdio.h>
int main()
{
int i=0;
while(i<=8,i++);
printf("%d",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编2:
#include<stdio.h>
int main()
{
int i=0;
while(i++,i<=8);
printf("%d",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Prog 1的输出为1,而Prog 2的输出为9。
有人可以解释一下这里发生了什么。两种代码有何不同?
逗号运算符依次评估其两个参数,并丢弃结果(最后一个除外)。最后计算的表达式确定整个表达式的结果。
i<=8,i++-这里的表达式的值是的值i++,它是i递增之前的值。它为0,因此循环立即终止。
i++,i<=8-这里的表达式的值i<=8是仅当i增加到9 时表达式的值才为0 。
我个人认为:第二种形式虽然与for循环有些相似,但对代码的读者来说却不如实际的for循环清楚。