2011-02-09 14 views

ответ

6

потому что 013 не десятичный (основание 10). это восьмеричное (база 8). значение в десятичном значении: (0 * 8^2) + (1 * 8^1) + (3 * 8^0) = 0 + 8 + 3 = 11

, который дает правильные (хотя и неожиданные, по крайней мере, вы) результат 16 при добавлении 5.

Мораль: не предварять номер буквального с 0, если вы не знаете, что это означает

+0

«Мораль этой истории: не предварять номер буквального с 0, если вы не знаете, что это значит» я не согласен с этим, так как его не настолько ясно, что 013 является восьмеричным ... так как в алгебре 013 = 13. но в PHP я согласен с моралью истории: P – llazzaro

+1

Это часть синтаксиса PHP, а не алгебра. Литеральные целые числа с ведущим 0 всегда являются восьмеричными в PHP. –

4

номер с ведущим нулем является восьмеричным числом

like

$a = 0123; // octal number (equivalent to 83 decimal 

Целые могут быть указаны в десятичной системе (основание 10), шестнадцатеричной (основание 16), или восьмеричное (основание 8) нотация, необязательно , которому предшествует знак (- или +).

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

0

$ у = 013; echo $ y + 5;

013 - это восьмеричное число. Все число целых чисел php является восьмеричным.

показать эту ссылку. первый.

http://www.ascii.cl/conversion.htm

Смежные вопросы