Целочисленные литералы в любой базе в C ++?

В C ++ можно назначать целые числа в десятичном виде: int x = 158в восьмеричном виде: int x = 0236 и в шестнадцатеричном: int x = 0x9e, Каковы самые простые способы определения intв любой базе, например бинарный, база 3, база 9, что ли? Существуют ли стандартные префиксы, такие как b101110или процесс более запутанный?

Благодарю.

1

Решение

Двоичные литералы (0b01010110101) были добавлены в C ++ 14.

Другие базы не поддерживаются, но их можно эмулировать, используя шаблонную необработанную форму пользовательских литералов и constexpr. Анджей Кшеменский описывает это здесь: https://akrzemi1.wordpress.com/2012/10/23/user-defined-literals-part-ii/

3

Другие решения

Первое: ваш пример не присваивает, а инициализирует. Во-вторых, вы назначаете выражение для int (или вы инициализируете это выражением). И, наконец, целочисленные литералы (которые допустимы только в выражении) могут быть выражены только в десятичном, восьмеричном или шестнадцатеричном виде; Семейство языков C не поддерживает ничего другого.

2

По вопросам рекламы [email protected]