为什么var_dump((int)(PHP_INT_MAX + 1))是负数?

时间:2015-05-29 14:32:36

标签: php

我从here

中提取了此结果
  

有趣的是,var_dump((int)(PHP_INT_MAX + 1))的结果将显示为负数(在此特定示例的情况下,它将显示int(-9223372036854775808))。同样,这里的关键是让候选人知道该值将显示为负数。

int为负,因为加1将溢出整数位并更改表示int符号的位?原因是什么?

1 个答案:

答案 0 :(得分:2)

@kainaw是正确的。 这称为“缓冲区溢出”。

PHP以最佳方式对其进行了处理。 如果PHP没有使该整数为正数,则RAM中会有一个额外的“位”浮动(可能会导致502错误,但情况可能更糟)