LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 734|回复: 2

Sid中PHP是不是有变量类型转换的bug,装了PHP的兄弟帮我测试一段简短代码

[复制链接]
发表于 2005-9-12 14:04:01 | 显示全部楼层 |阅读模式
就是将浮点数转换成 整型

  1. <?php

  2. //header("Content-Type: text/plain; charset=utf-8");

  3. $n = -6288256054;
  4. var_dump($n);

  5. $a = intval($n);
  6. var_dump($a);

  7. $b = (int) $n;
  8. var_dump($b);

  9. settype($n,"int");
  10. var_dump($n);

  11. ?>
复制代码




在host.sk的主机(geentoo PHP5.0.3)和自己一个Debian sarege(PHP4.3.11)主机上测试都是正确的

float(-6288256054)
int(-1993288758)
int(-1993288758)
int(-1993288758)

但是在,sid中,不管是php4.4.0还是.5.0.3都有问题,结果是

float(-6288256054)
int(-2147483648)
int(-2147483648)
int(-2147483648)


怎么回事啊,用SID的兄弟帮我测试一下啊
发表于 2005-9-12 19:52:06 | 显示全部楼层
I think sid is correct.
See http://php.net/intval
The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-13 13:44:11 | 显示全部楼层
Post by carlos
I think sid is correct.
See http://php.net/intval


没道理 intval($n) 当$n 是一个32bit不能保存的数,如long long类型的数,都强制为-2147483648 了吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表