https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87390
Vincent Lefèvre <vincent-gcc at vinc17 dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|FIXED |--- --- Comment #12 from Vincent Lefèvre <vincent-gcc at vinc17 dot net> --- (In reply to jos...@codesourcery.com from comment #9) > 6.3.1.5 in C99 has a clear division between promotions (no change to > value) and demotions + explicit conversions (remove excess precision). But there are no differences with 6.3.1.4 (when converting to a floating type): in both cases, either the value can be represented exactly, in which case it is unchanged, or it cannot, in which case it is rounded. When doing a conversion to some given type, the C standard does not care of the origin type of the value. In any case, this is orthogonal to the rules given by 6.3.1.8 (which cover extra precision and range).