Por que printf implícito float para int conversão não funcion

Por favor, ajude-me a entender a seguinte saída 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;
}

Ouput no compilador gcc

4.000000
0
4

Tanto quanto li quando atribuímos float a uma variável int, a parte decimal da variável é finalizada e depois atribuída à in

Por que não está acontecendo neste caso?

questionAnswers(3)

yourAnswerToTheQuestion