Экспоненциальное сокращение для целых чисел

Итак, я понимаю, что это: 1e3 Приравнивается к 1000.0,

У меня вопрос, есть ли аналогичные сокращения для целых чисел? Я понимаю, что могу сделать: static_cast<int>(1e3), Есть ли что-нибудь доступное для меня вне этого?

4

Решение

Нет, в C ++ нет синтаксиса для целочисленного литерала научной нотации.

Вы можете сократить конвертацию с помощью пользовательского литерала:

constexpr int operator "" _i(long double d) noexcept {
return d;
}

int main() {
auto big = 1e3_i; // is int
}

Однако это (по крайней мере, в GCC, которое я тестировал) не позволяет компилятору замечать переполнение при инициализации, поэтому в тех случаях, где это возможно, предпочтительнее более традиционные:

int big = 1e30; // compiler should yell at you
6

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector