为什么printf隐式浮点到int转换不起作用?

Amo*_*rma 1 c printf

请帮助我理解以下C输出:

#include<stdio.h>
int main() {
    float x = 4.0;
    printf("%f\n",x);
    printf("%d\n",x);
    int y=x;
    printf("%d\n",y);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出gcc编译器

4.000000
0
4
Run Code Online (Sandbox Code Playgroud)

据我所知,当我们将float赋值给一个int变量时,变量的小数部分终止然后分配给int.

为什么在这种情况下没有发生?

cni*_*tar 9

你不打印y,你x再打印.

作为旁注,printf不能做转换.因此,当a %d期望时传递浮点数是未定义的行为.