Ответ 1
Если ваша реализация на С++ использует IEEE754, тогда да, это гарантировано. (Оператор деления должен возвращать наилучшее возможное значение с плавающей запятой).
Единственными исключениями для y / y
, в общем случае, не являющимися 1f
являются случаи, когда y
- это NaN
, +Inf
, -Inf
, 0f
и -0f
, или если вы находитесь на платформе, где int
настолько широк, что некоторые его экземпляры не могут быть представлены в float
, если float
не установлен на +Inf
или -Inf
1. Исключая эту конечную точку, в вашем случае это означает, что int x = 0;
приведет к единственному исключению.
IEEE754 чрезвычайно распространен. Но, чтобы точно проверить, проверьте значение
std::numeric_limits<float>::is_iec559;
1 Платформа, например, с 128-разрядным int
и 32-битным IEEE754 float
будет демонстрировать это поведение для определенных значений x
.