艾米丽的餐厅15:一个C的小问题

来源:百度文库 编辑:高考问答 时间:2024/04/25 10:18:44
#include<stdio.h>
int main()
{
int x=3,y=6,a=0;
while (x++ != (y -= 1))
{
a += 1;
if (y < x)
break;

printf("x=%d,y=%d,a=%d\n",x,y,a);
getchar();
return 0;
}
为什么回答案会是5 4 1 不会 是5 3 1 呢?

y=y-1
第一次循环时y=6-1=5
第二次循环时y=5-1=4 x=5
y<x break,跳出循环

#include<stdio.h>

int main()
{
int x=3,y=6,a=0;

while (x != (y-1))
{
y = y - 1; // 6 5 4
x = x + 1; // 3 4 5
a = a + 1; // 0 1 2

if (y < x) {
break;
}
}
printf("x=%d,y=%d,a=%d\n",x,y,a);
getchar();

return 0;
}
第一次循环完成后while的表达式不成立,直接跳出。