Итак, я понимаю, что это: 1e3
Приравнивается к 1000.0
,
У меня вопрос, есть ли аналогичные сокращения для целых чисел? Я понимаю, что могу сделать: static_cast<int>(1e3)
, Есть ли что-нибудь доступное для меня вне этого?
Нет, в 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
Других решений пока нет …