Десятичная целочисленная константа без суффикса имеет - в зависимости от своего значения - тип int
, long
, long long
или, возможно, определенный расширенный целочисленный тип со знаком со значением, превышающим long long
.
Добавление суффикса L
означает, что тип будет по крайней мере long
, суффикс LL
означает, что тип будет по крайней мере long long
.
Если вы используете константу для инициализации переменной, добавление суффикса не имеет значения, так как в любом случае значение будет преобразовано в тип цели. Тем не менее, тип константы может быть уместен в более сложных выражениях, поскольку он влияет на семантику операторов, продвижение аргументов и, возможно, на другие вещи, о которых я сейчас не думал. Например, предполагая 16-битный тип int
,
long foo = 42 << 20;
вызывает неопределенное поведение, тогда как
long bar = 42L << 20;
четко определен.