PHP 整数相加溢出

2016-01-22 15:03:25 +08:00
 cloudhunter

我在 PHP 中处理图片,当我生成带透明通道的 argb 值时,我期望返回的是 0xFFFFFFFF ,但是结果很奇怪,有人知道原因吗?

$argb=0xFF << 24 + 0xFFFFFF;
var_dump($argb); // int(2139095040) == 0x7F800000

PHP 手册上说:

如果给定的一个数超出了 integer 的范围,将会被解释为 float 。同样如果执行的运算结果超出了 integer 范围,也会返回 float 。

2402 次点击
所在节点    程序员
2 条回复
solupro
2016-01-22 15:15:21 +08:00
$argb=(0xFF << 24) + 0xFFFFFF;
cloudhunter
2016-01-22 15:25:05 +08:00
@solupro 脑抽忘记优先级了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252619

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX