|  | 
 
| 
int i,x,y;
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  i=x=y=0;
 do {
 ++i;
 if ( i%2 )
 x+=i,
 i++;
 y +=i++;
 } while ( i<=7 );
 printf("%d %d %d", i, x, y);
 
 
 
 我调试了下 为什么x一直都是1
 
在给变量 x  赋值时,使用了逗号运算符 , 。逗号运算符会按照从左到右的顺序依次执行操作,并返回最后一个操作的结果作为整个表达式的结果。
 
在给 x  赋值的语句中,使用了逗号运算符 ,  来连接两个操作:
 
根据逗号运算符的规则,首先执行 x += i  这个操作,然后再执行 i++  这个操作。但是逗号运算符的返回结果是最后一个操作的结果,也就是 i++  的结果。因此,整个表达式 x += i, i++;  的结果是 i++  的结果。
 
接着来看程序的执行过程:
 
初始时,i = x = y = 0 。 
进入循环后,循环条件 i <= 7  满足,进入循环体。 
第一行:++i ,i 值变为 1。 
第二行:if (i % 2) ,由于 1 对 2 取余为 1,条件成立。 
第三行:x += i, i++ ,根据逗号运算符的规则,先执行 x += i ,此时 x 的值变为 1;然后执行 i++ ,i 的值变为 2。 
第四行:y += i++ ,y 的值为原先的 0 加上 i++ 的结果,即 0 + 2 = 2。i 的值变为 3。 
经过一次循环后,变量的值变为:i = 3, x = 1, y = 2 。
 
循环继续进行: 
第一行:++i ,i 值变为 4。 
第二行:if (i % 2) ,由于 4 对 2 取余为 0,条件不成立,跳过下面的语句。 
第四行:y += i++ ,y 的值为原先的 2 加上 i++ 的结果,即 2 + 4 = 6。i 的值变为 5。 
经过第二次循环后,变量的值变为:i = 5, x = 1, y = 6 。
 
接下来的循环过程可以依此类推。最终,当 i  的值为 8 时,循环条件 i <= 7  不满足,退出循环。
 
所以,在打印输出的语句 printf("%d %d %d", i, x, y);  中,x  的值是 1,因为在整个循环过程中只执行了一次 x += i ,而 i++  的结果并未赋值给 x 。
 
希望这个解释能帮助你理解代码的执行过程。如果还有其他问题,请继续提问。
球一个最佳答案谢谢啦!这对我非常重要!     | 
 |