1
我們向其提供源代碼的客戶之一表示,通過將int更改爲atoi和atoi,他們獲得了不同的程序結果。但據我所知,Windows上的int和long具有相同的4字節大小和相同的最小/最大值。在同樣的比喻中,我預計atoi和atol可以產生相同的輸出,而且我們的測試也是如此。atoi和atol在windows中的區別
那些我不知道的命令有什麼區別嗎?
我們向其提供源代碼的客戶之一表示,通過將int更改爲atoi和atoi,他們獲得了不同的程序結果。但據我所知,Windows上的int和long具有相同的4字節大小和相同的最小/最大值。在同樣的比喻中,我預計atoi和atol可以產生相同的輸出,而且我們的測試也是如此。atoi和atol在windows中的區別
那些我不知道的命令有什麼區別嗎?
在非錯誤的情況下,函數被定義既相當於
strtol(nptr, (char **)NULL, 10)
,唯一的區別是,atoi
投射返回值int
。
在錯誤情況下(當字符串表示超出該類型範圍的值)時可能會有不同的行爲,因爲行爲對於兩者都是未定義的。但我會很驚訝。即使atoi
和atol
未通過調用strtol
實現,它們可能是由相同的代碼或非常相似的實現的。
就我個人而言,我會要求客戶給我看確切的代碼。也許他們並不僅僅取代int
->long
和atoi
->atol
,因爲他們聲稱。如果這一切都發生了變化(但是他們的測試方式與您在測試時假設的方式略有不同),他們可能已經發現代碼中存在一個錯誤的症狀。
do'sizeof(int)'和'sizeof(long)'給出了相同的結果嗎? – Default
對「得到不同結果」做了什麼計算? – Default
這是在一個不尋常的平臺上嗎?嵌入式設備也許? – Telgin