Почему следующий код выдает -1 при компиляции с использованием g++ -O1? Моя версия gcc — 13.2.1.
#include <iostream>
#include <cmath>
#include <cfenv>
using namespace std;
int main() {
fesetround(FE_DOWNWARD);
cout << rint(-1.6) << endl;
return 0;
}
добавить -frounding-math исправлена проблема с gcc, ссылка
@konchy Похоже, это ответ - с некоторым расширением и (возможным) указанием на то, что это проблема несоответствия.
Также попробуйте добавить строку #pragma STDC FENV_ACCESS ON, как указано на странице cppreference.





Для GCC вам следует скомпилировать свою программу с помощью -frounding-math, если ваша программа может динамически изменять режим округления FP или может выполняться с режимом округления, отличным от режима по умолчанию
тестирование в обозревателе компилятора показывает, что это происходит во всех версиях g++ на -On с n > 0.