¿Por qué este progtwig no da salida para tipos de datos flotantes y dobles?

¿Por qué este progtwig no da salida para tipos de datos flotantes y dobles? Sin embargo, ¿cuál será el resultado cuando se reemplace el mismo código con for loop?

# include  int main() { float x=1.1; while (x==1.1) { printf("%f\n",x); x=x-0.1; } return 0; } 

  float x=1.1; while (x==1.1) 

Las variables float y double no son capaces de almacenar el valor exacto de 1.1, solo una aproximación muy cercana. El valor exacto en un flotador y un doble será ligeramente diferente debido a la diferencia de precisión.

1.1 es un valor doble . Está almacenando 1.1 como un doble en un flotador que alterará ligeramente el valor. Luego lo compara con el valor doble 1.1, por lo que no será exactamente igual y nunca entrará en su condición.

Para que esto funcione, necesita escribir 1.1f para asegurarse de que está trabajando con el mismo tipo de datos en todas partes. Además, estoy seguro de que alguien más explicará por qué comparar valores de punto flotante para lograr una igualdad exacta suele ser una mala idea.