L'addition de deux entiers de 32 bits peut entraîner un dépassement de capacité :
uint64_t u64_z = u32_x + u32_y;
Ce dépassement peut être évité si l'un des entiers de 32 bits est d'abord converti ou ajouté en un entier de 64 bits.
uint64_t u64_z = u32_x + u64_a + u32_y;
Cependant, si le compilateur décide de réordonner l'addition :
uint64_t u64_z = u32_x + u32_y + u64_a;
le dépassement d'entier peut encore se produire.
Les compilateurs sont-ils autorisés à effectuer une telle réorganisation ou pouvons-nous leur faire confiance pour remarquer l'incohérence du résultat et conserver l'ordre des expressions tel quel ?