-2

我有以下代码:

#include <stdio.h>

int main(int argc, char **argv) {
   int arr[2];
   arr[0] = 0;
   arr[1] = 0;
   int end = 0;
   int i;   
   for (i=0; i<2 ; i++){
      scanf(" num %d", &arr[i]);
   }

  scanf(" end %d", &end);
  printf("arr0 %d \n", arr[0]);
  printf("arr1 %d \n", arr[1]);
  printf("end  %d \n", end);

}

对于输入:

num 1
num 2
end 3

它工作得很好。但它也适用于下一个输入:

num 1
end 2

它如何知道结束 for 循环并评估最后一个 scanf?为什么不失败?

4

1 回答 1

1

scanf在第二个示例中确实失败了。第二次循环迭代失败并返回 0 个读取的项目保持arr[1]不变。然后循环结束,最后一个scanf成功读取第二行输入。

于 2018-04-27T14:25:26.210 回答