matlab中經常碰到nan,inf等特殊“數”,而在C++中也有相應的表示:例如std::numeric_limits <float>::quiet_NaN ();可以得到浮點型的nan,
但是最近在使用中發現一個奇怪的現象,
編譯環境 Ubuntu12.04 & Qt 5.0.2 & g++4.4
當g++添加fast-math編譯參數時,即.pro文件中添加選項QMAKE_CXXFLAGS += -ffast-math
此時產生nan再用isnan判斷的時候居然是返回false。。。
int main() { const static float f_nan = std::numeric_limits <float>::quiet_NaN (); if (std::isnan(f_nan)) cout<<"nan"<<endl; cout << "Hello World!" << endl; return 0; }
運行結果:
Hello World!
搞不懂為什么
先mark一下