Ведущие нули (Fy;rpny urln)

Перейти к навигации Перейти к поиску

Веду́щие нули́ в записи числа при помощи позиционной системы счисления — последовательность из одного или более нулей, занимающая старшие разряды. Понятие ведущих нулей возникает при использовании представлений чисел, имеющих фиксированное количество разрядов. В остальных случаях, как правило, ведущие нули не пишутся.

В языках программирования для восьмеричных констант

[править | править код]

В некоторых языках программирования, в частности, в Си/C++, Perl (до 6)[1][2] и Python (до 3.0), ведущий ноль перед числом указывает на восьмеричную систему счисления. Например, 0644 есть литеральная константа со значением 42010.

Сходный синтаксис имеется в языках Java и Ada. По статистике, применение восьмеричных констант в программах на языке Си чрезвычайно низко (около 0.1% от всех литеральных констант, без учета константы "0", технически также восьмеричной). Определенную популярность такие константы сохраняют в случае описания прав на файлы в Unix/POSIX стиле (0666, 0750), и при отдельных случаях работы с битовыми масками, когда программисту проще представлять битовое представление восьмеричных чисел, а не шестнадцатеричных или, тем более, десятичных[3].

Подобные правила могут быть неочевидны для программистов и приводят к ошибкам. В некоторых языках существуют рекомендации не использовать такую запись[1], в других языках форма записи восьмеричных констант была изменена (например, ECMAScript запретил восьмеричные константы с 5-й версии; в Python 2.6 для них введен префикс 0o, а с версии 3 запрещено использование ведущих нулей для восьмеричных констант)[4][5][6]. Некоторые более современные языки, например, Rust и D, запрещают такое использование, или не поддерживают восьмеричные константы[4].

Примеры использования

[править | править код]

Примечания

[править | править код]
  1. 1 2 INT00-PL. Do not prepend leading zeroes to integer literals - SEI CERT Perl Coding Standard - Confluence. Дата обращения: 2 октября 2018. Архивировано 3 октября 2018 года.
  2. Let’s stop copying C / fuzzy notepad. Дата обращения: 3 октября 2018. Архивировано 3 октября 2018 года.
  3. 829 An octal constant consists of the prefix 0 Архивная копия от 11 июля 2018 на Wayback Machine / "The New C Standard: An Economic and Cultural Commentary" (version 1.2, 2009)  (англ.)
  4. 1 2 Florian Weber. Octal Zero considered harmful (англ.) (8 апреля 2018). Дата обращения: 2 октября 2018. Архивировано 16 декабря 2018 года.
  5. Numbers — Conservative Python 3 Porting Guide 1.0 documentation. Дата обращения: 2 октября 2018. Архивировано 3 октября 2018 года.
  6. PEP 3127 - Integer Literal Support and Syntax | Python.org. Дата обращения: 2 октября 2018. Архивировано 3 октября 2018 года.