Ведущие нули


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

В некоторых языках программирования, в частности, в Си/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].