Как и в С++ 14, благодаря n3781 (который сам по себе не отвечает на этот вопрос) мы можем написать код следующим образом:
const int x = 1'234; // one thousand two hundred and thirty four
Цель состоит в том, чтобы улучшить код следующим образом:
const int y = 100000000;
и сделать его более читаемым.
Символ подчеркивания (_
) уже был взят в С++ 11 по пользовательским литералам, а запятая (,
) имеет проблемы с локализацией — многие европейские страны сбивают с толку & dagger; используют это как десятичный разделитель — и конфликтует с оператором запятой, хотя я действительно задаюсь вопросом, какой код реального мира можно было бы сломать, разрешив, например, 1,234,567
.
Во всяком случае, лучшим решением будет космический символ:
const int z = 1 000 000;
Эти соседние маркеры числового литерала могут быть объединены препроцессором так же, как строковые литералы:
const char x[5] = "a" "bc" "d";
Вместо этого мы получаем апостроф ('
), который не используется ни одной системой записи, о которой я знаю как разделитель цифр.
Есть ли причина, по которой апостроф был выбран вместо простого пространства?
& dagger; Это непонятно, потому что все эти языки в тексте поддерживают понятие "разломать" запятую другое атомное предложение, с периодом, действующим для "прекращения" предложение — для меня, по крайней мере, это довольно похоже на запятую "разломать" интегральную часть числа и период, "завершающий" его готовность к дробному входу.