2011-02-09 33 views
2
$y = 013; 
echo $y + 5; //this result in 16 

我无法弄清楚它的ans如何16?任何人都可以帮忙吗?与php算术相关

+0

出于某种原因,它被解释为013 11 – Nick 2011-02-09 06:13:55

回答

6

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

这给出了正确的至少由你)16的结果,当加入5

这个故事的寓意:不预置了一些文字0,除非你知道这意味着什么

+0

“这个故事告诉我们:不预置了一些文字0,除非你知道这意味着什么” 我不同意这种说法,因为它不是所以清楚013是八进制的...因为在代数013 = 13。但在PHP中,我同意故事的寓意:P – llazzaro 2011-02-09 06:18:35

4

含前导零的数目是八进制数

like

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

整数可以用十进制 (基体10),十六进制(基数16),或 八进制被指定(基座8)符号,可选地 前面有符号( - 或+)。

要使用八进制表示法,请在 之前加上0(零)。要使用 十六进制符号在 之前加0x。