i++, ++i的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 01:57:54
void main() {
int i = 0, j = 10;
for (i=0;i<j;i++,j--) {
j++;
if(j==10) {
prinft("%d, %d", i, j);
}
}
prinft("%d, %d", i, j);
}

请问一下大侠们,j的值是怎么变化的呀...

这里你主要是要搞清楚for语句的机制
如:
for(i=0;i<10;i++)
{
语句段A;
}

这里首次执行的时候先执行i=0;然后判断i<10;然后执行语句段A,然后再执行i++;
然后开始第二次循环:判断i<10,如果成立;执行语句段A
,然后执行i++;
第三次循环
第四次循环
........

void main() {
int i = 0, j = 10;
for (i=0;i<j;i++,j--)
{
j++; //在执行这条语句前没有执行i++,j--;这条语句所以j++结果是11;
if(j==10) {
prinft("%d, %d", i, j);
}
}
prinft("%d, %d", i, j);
}

每次是先执行j++,后执行j--,所以j的值在判断
if(j==10)的时候j等于11,所以不成立,然后再该次循环结束执行i++,j--;j又变为10;
然后又执行j++,在if(j==10)总是11
所以不执行下变得语句