Почему вывод для этого 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, а не десятичное.