我试图在琴弦上调用 atoi509951644
和4099516441
. 第一个转换没有任何问题。第二个是给我十进制值 2,147,483,647 (0x7FFFFFFF)。为什么会这样?
问问题
4708 次
2 回答
4
您的第二个整数正在创建溢出。最大 32 位有符号整数为 2147483647。
atoi
反正一般不推荐使用;改为使用strtol
,它实际上会告诉您您的值是否超出范围。(当输入超出范围时,行为atoi
是不确定的。你的似乎只是吐出最大值int
)
您还可以检查您的编译器是否有类似函数的atoi64
功能,它可以让您使用 64 位值。
于 2013-01-14T15:43:42.503 回答
1
2147483647 是 C(有符号)中的最大整数值。它给出了它可以的最大值......原件太大而无法转换为带符号的int。我建议查找如何转换为无符号整数。
于 2013-01-14T15:44:41.167 回答