自动转换二:自动转换为整形

一、整形

        整形数字可以用十进制、十六进制、八进制、二进制表示。不过不推荐使用八进制,在各个版本使用了错误的八进制表示都会有不同的返回结果或错误提示。

        注意,在官方文档中有一句话:“PHP 不支持无符号的 integer。这句话的意思,在 PHP 中,任意的整形数字都是有符号的,正数的符号可以省略。即每个硬件即平台对应的整数应该是:-2^(n - 1) ~ (2^(n - 1) - 1)。所以在 32 (2147483647)位平台下可能会有溢出的情况,64 (9223372036854775807)位肯定也会有,但是没人会存储一个那么大的整形吧。

        超出整形能表示的最大值,产生溢出,溢出为浮点型。

二、自动转换

        

//一、资源类型转换为整形,返回资源 id 号

//二、布尔值转换为整形
var_dump((int) true);            //1
var_dump((int) false);           //0

//三、浮点数转换为整形
var_dump((int) 1.23);            //浮点数转换为整形相当于 floor($float); 1
var_dump((int) 2147483647.01);   //超出整形最大值的浮点数转换为整形为“未定义”,没有警告、通知、输出
var_dump((int) nan);
var_dump((int) infinity);        //PHP7.0开始,这两个情况下返回 0,之前版本和上述一样,“未定义”

//四、字符串转换为整形,字符串转换涉及到转换为整形和浮点型,这里之说整形
//规则是:当字符串字符串不包含“.”、“e”、“E” 并且数字值在整形范围内,则会被当做整形取值,其他任何情况都被当做浮点型取值
var_dump((int) '0123aaa');        //123
var_dump((int) '0x123aa');        //0
var_dump((int) '0b123aa');        //0
var_dump((int) '123a22b');        //123

        注意上述的字符串转换中的第 2、3 个,虽然看起来是十六进制、八进制的表示,但是能被当做数字的仅仅是前面的 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值