C中while表达式是从左向右依次判断的
#include <stdio.h> int main() { int n, i; for (;;) { i = 0; while (scanf("%d", &n) && i<3) { i++; printf("%d ", n); } printf("\n"); } return 0; }
在VC6.0中输入1 2 3 4 5 6 7 8 9的输出为:
1 2 3
5 6 7
9
原来是while (scanf("%d", &n) && i<3)的问题,将它换成while (i<3 && scanf("%d", &n))问题就解决了。在while表达式&&中只要第一个表达式为假就不会执行第二个表达式,直接结束循环,当第一个表达式为真就执行第二个。