3

我试图在琴弦上调用 atoi5099516444099516441. 第一个转换没有任何问题。第二个是给我十进制值 2,147,483,647 (0x7FFFFFFF)。为什么会这样?

4

2 回答 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 回答