在一段代码中,我看到一个函数,它基本上以参数表示一个数字,表示一个时间,然后将其乘以得到它的值,以秒为单位。
在我看来,在这种情况下可能会发生缓冲区溢出;如果我输入的数字足够大,则乘以它会导致缓冲区溢出。然而,在烦扰之后,试图输入越来越大的数字,我无法生产它。
我的问题是,在这种情况下PHP是做什么来防止缓冲区溢出?
我认为它可能与php中的内存分配限制有关,但我也继续将其增加到接近无穷大,但仍然没有缓冲区溢出。
答案 0 :(得分:2)
请参阅参考integer overflow的文档中的示例:
如果PHP遇到超出整数类型边界的数字,那么 将被解释为浮点数。另外,一个操作 超出整数类型边界的数字将返回 而是浮动。
如果你var_dump
输出了你的返回值,你可能会注意到它已被强制转换为浮点数而不是整数(假设你实际上已经到达导致整数溢出的结果)。
整数的最大大小也取决于平台 - 32位计算机上整数的最大大小为2147483647,但在64位计算机上则为9223372036854775807
<强>更新强>
关于浮点类型的文档:
浮点数的大小取决于平台,但最大值为 ~1.8e308具有大约14个十进制数字的精度是常见的 值(64位IEEE格式)。
那是1.8 x 10 ^ 308,或18后跟307零(比number of atoms in the observable universe多了很多)