Числовые литералы¶
В Ü можно довольно гибко задавать числовые литералы.
Числовые литералы характеризуются:
- Основанием системы счисления.
- Наличием или отсутствием дробной части.
- Наличием или отсутствием экспоненты.
- Типом.
Существуют следующие основания системы счисления для числовых литералов:
- Литерал начинается с префикса
0b
. Доступны цифры 0-1.
- Литерал начинается с префикса
- Литерал начинается с префикса
0o
. Доступны цифры 0-7.
- Литерал начинается с префикса
- Литерал не имеет префикса. Доступны цифры 0-9.
- Литерал начинается с префикса
0x
. Доступны цифры 0-9 и a-f либо A-F.
- Литерал начинается с префикса
Дробная часть задаётся через указание .
после целой части литерала.
Экспонента позволена только для десятичных литералов. Задаётся экспонента через символ e
, опциональный знак +
или -
и значение экспоненты.
Примеры литералов:
42 // Простейший десятичный литерал
3.1415926535 // Десятичный литерал с дробной частью
1e5 // Десятичный литерал без дробной части, но с экспонентой
1.5e20 // Десятичный литерал с дробной частью и экспонентой
25.3e-5 // Десятичный литерал с дробной частью и отрицательной экспонентой
695e+7 // Десятичный литерал с явно указанной положительной экспонентой
0b1110 // Двоичный литерал
0b1.101 // Двоичный литерал с дробной частью
0o7124 // Восьмеричный литерал
0o7124.1005 // Восьмеричный литерал c дробной частью
0xAB054FE // Шестнадцатеричный литерал
0xAb054Fe // Разницы между заглавными A-F и строчными a-f нету
0x70.F4 // Шестнадцатеричный литерал с дробной частью
Тип числового литерала¶
Каждый числовой литерал имеет тип. Тип или можно указать явно - через суффикс типа, или же тип будет выбран неявно.
Имя любого фундаментального типа можно использовать в качестве суффикса типа. Кроме этого, есть ряд дополнительных суффиксов типа:
u
- суффикс для типаu32
.s
- суффикс для типаsize_type
.f
- суффикс для типаf32
.c8
- суффикс для типаchar8
.c16
- суффикс для типаchar16
.c32
- суффикс для типаchar32
.
Если суффикс типа не указан явно, тип для литерала будет выбран следующим способом: если литерал имеет дробную часть, его типом будет f64
, иначе - i32
.
55 // i32
64125 // i32
1e5 // i32
52.0 // f64
0b110 // i32
0b110.1 // f64
0o07741 // i32
0o0.722 // f64
0xFF // i32
0x541E.aa // f64
0u // u32
0x100u // u32
128s // size_type
0o521s // size_type
0.5f // f32
0b100f // f32
88c8 // char8
0b0c16 // char16
220c32 // char32
0i16 // i16
55f64 // f64
925u64 // u64
220char16 // char16