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


Why is var_dump((int)(PHP_INT_MAX + 1)) a negative number?

我从这里提取了这个结果:

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

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

@kainaw是对的。这被称为"缓冲区溢出"。

PHP以最好的方式处理它。如果PHP不使该整数为正,则RAM中会有一个额外的"位"浮动(可能会导致502错误,但情况可能更糟)