我尝试使用以下代码使用strtol将字符数组转换为整数:
int foo = strtol(temp, (char **)NULL, 0);其中temp = 4000000010
但是,strtol不会检测到溢出,它不会将foo设置为LONG_MAX,errno也不会从初始值0开始更改。
相反,bob被更改为溢出值-294967286。
所以我想知道我错过了什么?
发布于 2011-10-25 20:54:44
溢出可能发生在语句中的隐式long到int转换中,而不是strtol()内部。
发布于 2011-10-25 21:00:23
如果你知道你会得到很大的数字,为什么不使用strtoll呢?当然,就像其他人所说的那样,您肯定不能使用int来存储结果。
发布于 2011-10-25 21:00:26
https://stackoverflow.com/questions/7889516
复制相似问题