C++ Overflow during conversion to or from floating point type


If, during the conversion of:

  • an integer type to a floating point type,
  • a floating point type to an integer type, or
  • a floating point type to a shorter floating point type,

the source value is outside the range of values that can be represented in the destination type, the result is undefined behavior. Example:

double x = 1e100;
int y = x; // int probably cannot hold numbers that large, so this is UB