#include
void main()
{
int x,y;
for(x=30,y=0; x>=10,y<10;x--,y++){
x/=2,y+=2;
printf("x=%dy=%d\n",x,y);
}
}
for循环不应该x大于等于10才继续进行吗,第三次为什么x小于10了还能进行?
该回答引用ChatGPT
修正如下代码
#include <stdio.h>
int main()
{
int x, y;
for (x = 30, y = 0; x >= 10 && y < 10; x /= 2, y += 2) {
printf("x=%d, y=%d\n", x, y);
}
return 0;
}
因为你用的是逗号表达式,逗号表达式的值是最后一个表达式的值(最右面的)
你应该用&&来连接两个表达式,而不是逗号
for(x=30,y=0; x>=10,y<10;x--,y++) ,for()循环条件判断: x>=10,y<10; 两个条件间是逗号',' 运算符,整个表达式的值为最后一个表达式的值,也就是这里的循环判断条件 y < 10 才是有效的条件,x >= 10 这个条件会被忽略。
逗号表达式详解,供参考https://baike.baidu.com/item/%E9%80%97%E5%8F%B7%E8%A1%A8%E8%BE%BE%E5%BC%8F/4496335?fr=aladdin