我正在尝试使用 strtol 使用以下代码将字符数组转换为整数:
int foo = strtol(temp, (char **)NULL, 0);
其中温度 = 4000000010
但是 strtol 没有检测到溢出,它没有将 foo 设置为 LONG_MAX 并且 errno 没有从它的初始值 0 改变。
而是将 bob 更改为溢出的值 -294967286。
所以我想知道我在这里错过了什么?
溢出可能发生在您的语句中的隐式转换上,而不是long
在.int
strtol()
如果你知道你会得到很大的数字,为什么不使用strtoll
呢?当然,就像其他人所说的那样,您绝对不能使用 anint
来存储结果。