我有一段Javascript代碼,我試圖將它轉換爲C代碼。我有一個問題,將下列行轉換爲C:IsNan等效於C
var q = (!isNaN(dLat/dPhi)) ? dLat/dPhi : Math.cos(lat1);
你能告訴我等價於C中的isNan嗎? 謝謝。
我有一段Javascript代碼,我試圖將它轉換爲C代碼。我有一個問題,將下列行轉換爲C:IsNan等效於C
var q = (!isNaN(dLat/dPhi)) ? dLat/dPhi : Math.cos(lat1);
你能告訴我等價於C中的isNan嗎? 謝謝。
第一眼看起來,它看起來像原來的作者只是想檢查dPhi
是0,所以你可能想要替換它。但是,如果你想代碼逐字翻譯,只需使用isnan
宏從math.h中,像這樣:
#include <math.h>
double q = (!isnan(dLat/dPhi)) ? dLat/dPhi : cos(lat1);
此行給出以下錯誤: 錯誤C2143:語法錯誤:缺少';'在'type'之前 我正在使用Visual C++ 6.0 – Azeem 2012-02-11 12:26:13
這聽起來像在前面的一行中存在拼寫錯誤。嘗試用盡可能少的幾行代碼來重現問題(比如10,包括主函數)。如果在這個過程中沒有爲您解決問題,請提出一個新的計算器問題幷包含完整的代碼。 – phihag 2012-02-11 12:30:57
我改變了代碼,如您第一眼看到的: if(dPhi == 0) \t \t q = cos(lat1R); \t else \t \t q = dLat/dPhi; 謝謝。 – Azeem 2012-02-11 12:33:41
C在math.h
中有一個isnan
宏(這是一個C99加法)。
僅當參數爲NaN值時,宏纔會返回非零值int
。
不要覺得愚蠢的,但它是:
isnan(x)
您還可以使用fpclassify
,並檢查是否返回結果是FP_NAN
。
isnan
最初是在3BSD中引入的,但是直到C99纔開始使用跨平臺規範。在C99中出現了fpclasify
。他們在math.h
。
Microsoft在MSVC中提供_isnan
,在float.h
中。
假設你的C實現是現代(即任何東西,但MSVC)你應該有isnan
提供math.h
。否則,if (x!=x)
是一個非常好的方法來檢查NAN,如果你不關心它修改浮點異常標誌(幾乎沒有人使用或關心)。
你想確定是否不爲null?如果是這樣檢查出來:http://stackoverflow.com/questions/872323/method-call-if-not-null-in-c-sharp – Alex 2012-02-11 12:17:59
我想確定,如果它不是一個數字(isNan).Can請告訴我如何在C中使用isnan函數? – Azeem 2012-02-11 12:20:38