【发布时间】:2012-09-05 15:55:03
【问题描述】:
这是我在 Mac OS X(10.8.1、64 位和 10.6.8、32 位)和 Ubuntu(10.04、32 位)上运行的代码:
printf("%d\n", atoi("2147483648"));
// returns -2147483648 in Mac OS X 10.8.1 and 10.6.8
// returns 2147483647 in Ubuntu
这是我在谷歌搜索后发现的:http://gynvael.coldwind.pl/?id=365
有什么原因导致不同系统的输出不同吗?
【问题讨论】:
-
IIRC 任何不能在其被转换为的类型中表示的值都具有由实现定义的值。在你的情况下 libc 只返回 INT_MAX 而在 Mac OS 中你会得到一个溢出
-
Ubuntu 32 位还是 64 位?