我正在尝试使用以下代码使用strtol将字符数组转换为整数:
int foo = strtol(temp, (char **)NULL, 0);
凡temp = 4000000010
然而strtol没有检测到溢出,它没有将foo设置为LONG_MAX并且errno不会从其初始值0改变。
而是将bob更改为溢出值-294967286。
所以我想知道我在这里失踪了什么?
答案 0 :(得分:3)
溢出可能发生在语句中的隐式long
到int
转换中,而不是strtol()
内。
答案 1 :(得分:0)
如果您知道自己会获得大数字,为什么不使用strtoll
呢?当然,和其他人一样,那么你肯定不能使用int
来存储结果。
答案 2 :(得分:0)