sprintf%u给出了错误的结果

时间:2013-12-06 14:05:24

标签: php unsigned printf signed

简单脚本,PHP 5.3.13,Windows 8,x32

<?php var_dump(sprintf('%u', -1380556906));

它给了我正确的结果

string(10) "2914410390"

与PHP 5.4.11相同,Freebsd 9.1,x64给出了

string(20) "18446744072328994710"

为什么呢?如何将signed int打印为unsigned int?

1 个答案:

答案 0 :(得分:0)

@Barmar在评论中给出了答案。

您遇到无符号整数溢出。

然而,由于整数大小可能因架构而异,因此either 32 or 64 bits long