2017-02-21 11 views
0

Каковы способы присвоения типа литералному примитиву без трансляции? Я знаю, что 0.0 становится двойным, а 0.0f становится плавающим. Есть ли другие способы, чтобы привести к литературе?Сокращенный способ присвоения типа примитивному литералу

+0

В чем проблема, которую вы на самом деле пытаетесь решить? Я не понимаю, в чем ваш вопрос. – Barry

+0

Я не хочу делать 'static_cast < uint32_t > (0)' каждый раз. Я просто не могу заставить Google рассказать мне, как делать что-то вроде сокращения 0.0f. – theSparky

+0

Можете ли вы изменить свой вопрос, чтобы спросить об этом? Я не знаю, что союз должен делать с чем угодно. – Barry

ответ

3

Есть куча suffixes, что вы можете добавить в целочисленных литералов, чтобы получить типы вы хотите:

1 // int 
2u // unsigned int 
3ll // long long int 
4ull // unsigned long long int 

Аналогично, для floating literals, суффикс не дает double, f дает float и l дает вы long double.

Суффикс литерального формата для типов не более int. Но вы можете написать свой собственный, например .:

inline uint16_t operator ""_u16(uint64_t value) { 
    return static_cast<uint16_t>(value); 
} 

5_u16 // uint16_t 

Кроме VC-видимому, обеспечивает буквенные суффиксы для всех типов - как 10i16 дает вам int16_t.

Смежные вопросы