Целочисленные константы — это числа, используемые напрямую в коде программы, без определения переменной для их хранения. По умолчанию такие константы определяются как тип int (от integer — целочисленный), однако это может быть изменено директивами U и L.
Обычно константы такого типа считаются десятичными целыми числами, однако специальные директивы позволяют менять основание системы счисления (см. таблицу ниже).
Основание системы счисления | Пример | Директива | Комментарий |
10 (десятеричный — decimal) | 12345 | нет | — |
2 (двоичный — binary) | B1011 | первый символ — «B» | только для 8-разрядных значений (от 0 до 255 включительно), разрешенные знаки 0 и 1 |
8 (восьмеричный — octal) | 765 | первый символ -«O» | разрешенные знаки — 0-7 |
16 (шестнадцатеричный — hexadecimal) | 0xA8D | первые символы -«0x» | разрешенные знаки 0-9, A … F (либо a … f) |
У десятичных констант (decimal) основание системы счисления равно 10. Они наиболее распространены и применяются повсеместно. Не имеют директив. Константы без префиксов (директив) по умолчанию считаются десятичными.
Пример:
1 |
const x = 12345; // 12345 десятичные -> (1*10^4) + (2*10^3) + (3*10^2) + (4*10^1) + (5*10^0) |
Пример:
1 |
const x = B1011; // 11 в десятичной системе счисления -> (1*2^3) + (0*2^2) + (1*2^1) + (1*10^0) |
Использование двоичного формата разрешено только для 8-разрядных чисел, принимающих значения в пределах от 0 (B0) до 255 (B11111111). Если необходимо задать значение 16-битного целого int бинарными константами, то это может быть сделано в следующим образом:
Пример:
1 |
const x =(B11001100*256) + B10101011; |
У восьмеричных констант (octal) основание системы счисления равно 8. Допустимы значения символов в диапазоне 0 … 7. Префикс — «O».
Пример:
1 |
const x = 765; // 501 десятичные -> (7*8^2) + (6*8^1) + (5*8^0) |
У шестнадцатеричных констант (hexadecimal, сокращённо hex) основание системы счисления равно 16. Допустимы значения символов в диапазоне 0 … 9, и A … F (либо a … f). Префикс — «0x».
Пример:
1 |
const x = 0xA8D; // 2701 десятичные -> (A*16^2) + (8*16^1) + (D*16^0) |
Директивы U и L.
По умолчанию целочисленные константы относятся компилятором к типу int. Для того, чтобы компилятор использовал другой тип данных, используются следующие директивы:
- ‘u’ или ‘U’ для беззнакового целочисленного числа. Пример: 87u
- ‘l’ или ‘L’ для типа данных long. Пример: 111111L
- ‘ul’ или ‘UL’ для беззнакового числа типа данных long. Пример: 32767ul