while(scanf("%d %d",&m,&n),m&&n)和while(scanf("%d",&n)&n)有什么区别

2024-11-26 10:19:24
推荐回答(1个)
回答1:

语句while(scanf("%d %d",&m,&n),m&&n) 先从输入流里取两个整数赋给m和n, 并对 "m && n“做条件判断, 相当于 while (m && n)。当m和n都不为0时,执行while里面的语句。有一个为0则退出循环。
这个while语句不会去判断scanf("%d %d",&m,&n)的返回值。

while(scanf("%d",&n)&n)先从输入流取一个整数赋给n, 并对scanf的返回值和 n 的"与"做判断。相当于: while(count=scanf("%d",&n), count & n), 也就是 while (count & n),当然,count的值是从scanf返回的。这个情况,如果输入流没有整数,则推出循环(count = 0)。如果输入流有整数(count = 1),当这个整数是偶数既退出循环,奇数则执行while里面的语句。