与php算术有关

时间:2011-02-09 06:01:15

标签: php

$y = 013;
echo $y + 5; //this result in 16

我无法弄明白它是怎么回事并且是16?任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:6)

因为013不是十进制(基数为10)。它是八进制(基数为8)。十进制值是: (0 * 8 ^ 2)+(1 * 8 ^ 1)+(3 * 8 ^ 0)= 0 + 8 + 3 = 11

在添加到5时给出正确的(虽然意外,至少是你)16的结果。

故事的道德:除非你知道这意味着什么,否则不要在0之前加上数字

答案 1 :(得分:4)

前导零的数字是八进制数

like

$a = 0123; // octal number (equivalent to 83 decimal
  

可以用十进制指定整数   (基数10),十六进制(基数16)或   八进制(基数8)表示法,可选   前面有一个符号( - 或+)。

     

要使用八进制表示法,请在...之前   数字为0(零)。使用   十六进制表示法在   数字为0x。

答案 2 :(得分:0)

$ y = 013; echo $ y + 5;

013是八进制数,所有php整数都是八进制。

显示此链接。第一

http://www.ascii.cl/conversion.htm