当一个for循环中包含多个scanf()时会发生什么情况

当一个for循环中包含多个scanf()时会发生什么情况,c,for-loop,scanf,C,For Loop,Scanf,我已经写了一个代码来比较三元组问题 输入:2个大小为3的数组 任务是通过比较a[0]与b[0]、a[1]与b[1]以及a[2]与b[2]来找到它们的比较点。 如果a[i]>b[i],则Alice将获得分数。如果a[i]

我已经写了一个代码来比较三元组问题 输入:2个大小为3的数组 任务是通过比较a[0]与b[0]、a[1]与b[1]以及a[2]与b[2]来找到它们的比较点。 如果a[i]>b[i],则Alice将获得分数。如果a[i]
 #include<stdio.h>
 void main(){   
       int i, alice[3], bob[3];
       int a = 0;
       int b = 0;

       for(i=0; i<3; i++){
                 scanf("%d", &alice[i]);
       }
       for(i=0; i<3; i++){
                 scanf("%d", &bob[i]); 
       }
       for(i=0; i<3; i++){ 
                if(alice[i] > bob[i])  
                       a++; 
                else if (alice[i] < bob[i]) 
                        b++;
       }   
      printf("%d %d", a, b);
 } 
但是当我把两个扫描放在一行时

  for(i=0; i<3; i++){    
             scanf("%d", &alice[i]); 
             scanf("%d", &bob[i]); 
  }

所有输入的输出类似于2 1或1 2。在一个for循环中放置两个扫描是错误的吗?我不明白这个问题背后的原因是什么?有人能解释一下原因吗?

第一个版本读到alice的三个值,然后是bob的三个值。第二个版本为alice读取一个值,然后为bob读取一个值,并重复3次


如果输入的数字是1,2,3,4,5,6,那么在第一个示例中,alice得到1,2,3,而bob得到4,5,6;在第二个例子中,alice得到1,3,5,而bob得到2,4,6。结果完全不同。

它将以不同的顺序读取它们。哪一个是正确的取决于输入的顺序。请尝试printfenter Alice的值%d\n,i;扫描%d,&alice[i];printfenter Bob的值%d\n,i;扫描%d,&bob[i];