2014-12-16 3 views
4

Почему выход к этому 20, а не 22? Видя, как вы добавляете 10 + 0xA (который 10 в HEX) + 2.PHP: Почему ответ на это дополнение 20, а не 22?

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

print $a + $b + $c; 

Output: 20. 
+1

октябрь + HEx + dec Проверить прямо сейчас! – Tushar

+1

Ни один из ответов не связан с документами по обработке целочисленного кода PHP, поэтому [здесь вы ...] (http://php.net/manual/en/language.types.integer.php) –

ответ

21

Это правильно!

(Потому что первый номер octal так что если вы хотите, чтобы быть интерпретированы как десятичное вы должны удалить первую 0) Se:

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

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

Выход:

20 
+0

О, как я пропустил Восьмая часть. Спасибо!! –

+0

@ StephenFox Добро пожаловать! Хороший день: D – Rizier123

3

См the manual for numbers:

Чтобы использовать восьмеричную систему счисления, предшествуют число 0 (ноль). Для использования шестнадцатеричной нотации предшествует номер с 0x. Для использования двоичной нотации предшествует номер с 0b.

010 является восьмеричным числом (он начинается с 0, которая не сопровождается десятичной точкой), которая находится в десятичной системе 8.

1

Этот будет решаться:

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

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

0 ведущий поставщик $ a был поставлен как значение Octal, а не десятичное.