Причины NaN в приложении C ++, которые не вызывают исключения с плавающей запятой

Чтобы найти причину того, что переменные с плавающей запятой устанавливаются в NaN в моей программе на C ++, я включил исключения с плавающей запятой, например:

#include <fenv.h>
feenableexcept(FE_INVALID | FE_OVERFLOW);

Я знаю, что это работает, потому что когда я пишу:

int val = 0.0/0.0;

в моей программе Возникает исключение с плавающей запятой. Но NaN "распространяются" через вычисления с плавающей запятой в моей программе, и я понятия не имею, какая переменная установлена ​​в NaN первой.

Какие существуют причины, по которым переменная имеет значение NaN, которые не вызывают исключения с плавающей запятой?

8
задан Keith Pinson 28 December 2012 в 16:54
поделиться