Суффиксы числовых литералов в C#
Сразу после цифр можно поставить букву.
Ее называют суффиксом. Буква задает
тип самого числа. Например, буква L
задает long:
long num = 100L;
Console.WriteLine(num);
Буква U или u задает беззнаковое
целое, например uint:
uint num = 50U;
Console.WriteLine(num);
Буквы U и L можно поставить вместе.
Получается ulong. Порядок букв
любой: UL или LU:
ulong num = 100UL;
Console.WriteLine(num);
Буква f или F задает float.
Дробный литерал без f имеет тип double,
и в float его так не запишешь:
float num = 3.14f;
Console.WriteLine(num);
Буква m или M задает decimal.
Для decimal суффикс обязателен, если
тип не выведен из контекста:
decimal num = 10.5m;
Console.WriteLine(num);
Буква d явно помечает double,
но для double она не обязательна:
double num = 3.14d;
Console.WriteLine(num);
Суффикс у литерала можно не писать, если слева уже указан тип переменной и число в него помещается:
long num = 100;
Console.WriteLine(num);
Без буквы целое имеет тип int, если оно
в него входит:
int num = 50;
Console.WriteLine(num);
Если целое в int не входит, компилятор
выбирает более широкий тип литерала -
uint или long. Число 3000000000
без буквы имеет тип uint, а для long
нужен суффикс L:
long num = 3000000000L;
Console.WriteLine(num);
Дробь без буквы имеет тип double:
double num = 3.14;
Console.WriteLine(num);
Дан следующий код:
long num1 = 10000000000;
uint num2 = 50;
float num3 = 2.5;
Console.WriteLine(num1);
Console.WriteLine(num2);
Console.WriteLine(num3);
Скажите, соберется ли этот код без суффиксов.
Какой тип у числа 50, если буквы
после него нет?
Какой тип у числа 3.14, если буквы
после него нет?
Нужен ли суффикс f у числа 2.5,
если его записывают в переменную типа float?
Какой тип у записи 50U?
Какой тип у записи 3.14f?
Какой тип у записи 100L?
Какой тип у записи 100UL?