atoi()是C标准的一部分吗?

Jof*_*sey 0 c type-conversion atoi

是atoi()C标准的一部分吗?

我应该用什么来转换char*为intif atoi()不标准化?

Kei*_*son 9

是的,atoi()是标准C的一部分 - 不幸的是.

我说"不幸",因为它没有错误检查; 如果返回0,你就无法知道那是因为你通过它"0",或者因为你通过它"hello, world\n"(这有可能有不确定的操作,但通常返回0).

该strtol()函数使用起来比较复杂,但它可以进行适当的错误检查.它返回一个long结果,然后你就可以转换为int-检查它的范围后,最好INT_MIN到INT_MAX.

参考:N1570 7.22.1.2.

  • 是.我认为这个想法是将'atoi`预期(或至少允许)实现为一个只乘以10的循环并添加新读取的数字.由于有符号溢出是未定义的行为,`atoi`继承了未定义的行为. (2认同)