$y = 013;
echo $y + 5; //this result in 16
我无法弄明白它是怎么回事并且是16?任何人都可以帮忙吗?
答案 0 :(得分:6)
因为013不是十进制(基数为10)。它是八进制(基数为8)。十进制值是: (0 * 8 ^ 2)+(1 * 8 ^ 1)+(3 * 8 ^ 0)= 0 + 8 + 3 = 11
在添加到5时给出正确的(虽然意外,至少是你)16的结果。
故事的道德:除非你知道这意味着什么,否则不要在0之前加上数字
答案 1 :(得分:4)
前导零的数字是八进制数
$a = 0123; // octal number (equivalent to 83 decimal
可以用十进制指定整数 (基数10),十六进制(基数16)或 八进制(基数8)表示法,可选 前面有一个符号( - 或+)。
要使用八进制表示法,请在...之前 数字为0(零)。使用 十六进制表示法在 数字为0x。
答案 2 :(得分:0)