Clarification sur les expressions constantes entières

Quelque part, j’ai lu que les expressions constantes entières sont des constantes entières telles que:

(5 + 5) //integer constant expression 

C’était le seul exemple que j’ai vu.

Maintenant, du standard qui dit:

(C99 6.6 / 6) Une expression constante entière doit avoir un type entier et ne comporter que des opérandes constantes, des constantes d’énumération, des constantes de caractère, des expressions sizeof dont les résultats sont des constantes d’entier et des constantes flottantes constituant les opérandes immédiats des conversions. Les opérateurs de casting dans une expression constante entière ne convertissent que les types arithmétiques en types entiers, sauf dans le cadre d’un opérande en opérateur sizeof.

Alors, est-ce que toutes ces expressions entières ci-dessous si j’ai raison?

 int i; float f = 3.14f; i = 42; i = f; i = (int)(5/3.14f); 

(int)(5/3.14f) n’est pas une expression constante entière.

Vous utilisez une constante flottante qui n’est pas un opérande immédiat de la conversion .

Et bien sur dans i = f; l’object f n’est pas une expression constante entière.