PHP: Почему ответ на это дополнение 20, а не 22?

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

$a = 010; $b = 0xA; $c = 2; print $a + $b + $c; Output: 20. 

Это верно!

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

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

Вывод:

 20 

См. Руководство по номерам :

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

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

Это решит:

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

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