while(scanf("%d%d",&a,&b)&&(a||b))
首先理解scanf的返回值为int型,成功读取2个数返回2,只读取了一个数a返回1,读取a失败返回0,遇到文件尾或错误返回EOF,。前面部分只要不是结束或不为0和后面a||b表示只要a或者b不同时为0,条件就为真
【相关推荐】
#include <stdio.h>
int main() {
int a, b, tmp;
while (scanf("%d %d", &a, &b) != EOF) {
tmp = a; // (1)
a = b; // (2)
b = tmp; // (3)
printf("%d %d\n", a, b);
}
return 0;
}
tmp = a;
表示把 aaa 杯子的水倒进这个临时的杯子里;a = b;
表示把 bbb 杯子的水倒进 aaa 杯子里;b = tmp;
表示把临时杯子里的水倒进 bbb 杯子里;