13

有人告诉我,我不应该使用atoi(),而应该始终使用strtol()atoi()我不应该使用它有什么问题?strtol()使用它真的是正确的吗?(那么strtol()返回 along而不是intlike的atoi()事实呢?)

4

3 回答 3

27

从您自己的链接

atoi() 函数被 strtol() 包含,但由于它在现有代码中广泛使用而被保留。如果不知道该数字在范围内,则应使用 strtol(),因为 atoi() 不需要执行任何错误检查。

或者

atoi已过时

于 2013-07-17T20:57:03.960 回答
6

由于atoi没有特殊错误“return”,因此无法确定传递的字符串是否真的是数字。它也只处理十进制值(以 10 为基数),因此不能处理任意基数,例如strtol. 它也不能处理大于有符号整数(大多数平台上为 32 位)的值。

于 2013-07-17T20:58:08.653 回答
5

如果字符串很大并且无法转换,则会导致未定义的行为,因为该字符串的值可能太大并且可能不在范围内。在这种情况下(数字不知道在范围内strtol()应该使用。

于 2013-07-17T20:59:57.363 回答