为什么当我将浮点数分配给 int 变量时,数字的小数部分会分配给我的下一个变量?

Mar*_*DGF 1 c variables

这是我试图理解的代码:

#include <stdio.h>
 
int main()
{
    int i,j;
    float x;
    scanf("%d%f%d", &i, &x, &j);
    printf("%d - %f - %d",i, x, j);
    return 0;
}
 
Run Code Online (Sandbox Code Playgroud)

输入:

10.3 5 6

输出:

10 - 0.300000 - 5

所以这就是我想弄清楚的

  • 为什么当我尝试将浮点值 ( 10.5 )分配给我的类型 int 变量 ( i ) 时,该值的小数部分会被扔到在 scanf ( x ) 中调用的下一个变量中?

  • 发生了什么使计算机将 0.3 分配给x而不是 5?

Mik*_*CAT 8

  1. %d看到了10.3 5 6。它读取10并停止,.因为它是整数的无效字符。
  2. %f看到了.3 5 6。它读取.3并停在空白处。
  3. %d看到了 5 6。它跳过前导空格,读取5并在空格处停止。