$y = 013;
echo $y + 5; //this result in 16
Я не могу понять, как его аз 16? Может ли кто-нибудь помочь?, связанный с php арифметикой
$y = 013;
echo $y + 5; //this result in 16
Я не могу понять, как его аз 16? Может ли кто-нибудь помочь?, связанный с php арифметикой
потому что 013 не десятичный (основание 10). это восьмеричное (база 8). значение в десятичном значении: (0 * 8^2) + (1 * 8^1) + (3 * 8^0) = 0 + 8 + 3 = 11
, который дает правильные (хотя и неожиданные, по крайней мере, вы) результат 16 при добавлении 5.
Мораль: не предварять номер буквального с 0, если вы не знаете, что это означает
«Мораль этой истории: не предварять номер буквального с 0, если вы не знаете, что это значит» я не согласен с этим, так как его не настолько ясно, что 013 является восьмеричным ... так как в алгебре 013 = 13. но в PHP я согласен с моралью истории: P – llazzaro
Это часть синтаксиса PHP, а не алгебра. Литеральные целые числа с ведущим 0 всегда являются восьмеричными в PHP. –
номер с ведущим нулем является восьмеричным числом
$a = 0123; // octal number (equivalent to 83 decimal
Целые могут быть указаны в десятичной системе (основание 10), шестнадцатеричной (основание 16), или восьмеричное (основание 8) нотация, необязательно , которому предшествует знак (- или +).
Чтобы использовать восьмеричную нотацию, перед номером с 0 (ноль). Использовать шестнадцатеричную нотацию предшествует номер с 0x.
$ у = 013; echo $ y + 5;
013 - это восьмеричное число. Все число целых чисел php является восьмеричным.
показать эту ссылку. первый.
По какой-то причине он интерпретирующего 013 в 11 – Nick