PHP:为什么这个加法的答案是20而不是22?

时间:2014-12-16 16:05:03

标签: php

为什么输出到20,而不是22?看到你正在添加10 + 0xA(十六进制中为10)+2。

$a = 010;
$b = 0xA;
$c = 2;

print $a + $b + $c;

Output: 20.

3 个答案:

答案 0 :(得分:21)

这是对的!

(因为第一个数字是octal所以如果你想把它解释为小数,你必须删除第一个数字0) 硒

$a = 010;  //Octal -> 8
$b = 0xA;  //Hex   -> 10
$c = 2;    //Dec   -> 2

print $a + $b + $c;  //20

输出:

20

答案 1 :(得分:3)

请参阅the manual for numbers

  

要使用八进制表示法,请在数字前面加上0(零)。要使用十六进制表示法,请在数字前面加上0x。要使用二进制表示法,请在数字前加上0b。

010是一个八进制数(以0开头,后面没有小数点),小数为8

答案 2 :(得分:1)

这将解决:

<?php
$a = 10;
$b = 0xA;
$c = 2;

print $a + $b + $c;
?>

领先于$ a的0是一个八进制值,而不是十进制值。