有人告訴我,我不應該使用atoi()
,而應該始終使用strtol()
來代替。 atoi()
有什麼問題我不應該使用它? strtol()
真的是正確的使用? (這strtol()
返回擔心的是什麼long
,不是int
像atoi()
呢?)爲什麼我不應該使用atoi()?
6
A
回答
16
從自己link:
()函數由strtol將歸入(),但被保留,因爲的atoi它在現有的代碼中被廣泛使用。 如果數字不在範圍內,應該使用strtol(),因爲atoi()不需要執行任何錯誤檢查。
或者
atoi
是過時
4
隨着atoi
沒有發現如果傳遞的字符串確實是一個編號的方式,因爲沒有特殊的錯誤「迴歸」。它也只處理十進制值(基數10),所以不能處理任意的鹼基,如strtol
。它也不能處理大於有符號整數的值(在大多數平臺上是32位)。
4
如果字符串會很大並且無法轉換,則會導致未定義的行爲,因爲該字符串的值可能太大,並且可能不在範圍內。在這種情況下(號碼未知在範圍內)應使用strtol()
。
相關問題
- 1. 爲什麼我不應該使用Unity?
- 2. 爲什麼我應該使用@properties?
- 3. 我應該爲git user.name使用什麼?
- 4. 我應該使用什麼鍵爲HashMap?
- 5. (爲什麼)我應該使用混淆?
- 6. 爲什麼我應該使用org.gradle.api.tasks.Exec?
- 7. atoi()不喜歡我在做什麼
- 8. 在Twisted中使用MongoDB。爲什麼我不應該使用pymongo?
- 9. 爲什麼不推薦使用assert_template,而應該使用什麼?
- 10. 爲什麼我不應該繼承UIButton?
- 11. 爲什麼或者爲什麼不應該使用Java 7?
- 12. 爲什麼我不應該用繼承來使用equals?
- 13. 爲什麼我應該使用vagrant如果我使用virtualenv?
- 14. 什麼是Template.myTemplate.helpers(幫助器),爲什麼我應該使用它?
- 15. 什麼是NHibernate,爲什麼我應該使用它?
- 16. 爲什麼/我應該在什麼時候使用dojo模塊?
- 17. 依靠默認編碼,我應該使用什麼,爲什麼?
- 18. 什麼是反向代理,爲什麼我應該使用Node.JS?
- 19. 爲什麼我不應該使用HTML框架?
- 20. 爲什麼我應該使用Amazon Kinesis而不是SNS-SQS?
- 21. 爲什麼我不應該使用查找優化?
- 22. 爲什麼我應該使用XMLLIst而不是簡單的XML?
- 23. 爲什麼我們不應該在角度上使用jquery?
- 24. 爲什麼我應該使用var而不是類型?
- 25. 爲什麼我應該使用IHttpActionResult而不是HttpResponseMessage?
- 26. 爲什麼我應該使用JLabel而不是Image?
- 27. 爲什麼我應該使用1bit位域而不是bools?
- 28. 爲什麼我應該使用$ _GET和$ _POST而不是$ _REQUEST?
- 29. 爲什麼我不應該在JavaScript中使用Alert?
- 30. 爲什麼我應該使用goog.ui.Checkbox而不是常規輸入?
注意:我非常清楚爲什麼不使用'atoi()'。然而,雖然我看到有關如何使用atoi()解釋爲什麼不使用它的問題,但我一直無法找到這個直接的問題,我認爲將問題和答案連接在一起會是有用的正確地作爲一對。 –
(另外,我很好奇看到人們想出什麼答案,變化可能很有趣。) –
這是不是已經被討論過了?你有沒有環顧過這個網站? –