Я новичок в C # и хочу понять, как работают значения. Если я посмотрю на обычное целочисленное значение, у него есть 3 важные части: тип, имя и значение.
int testInt = 3;
| | |
Type Name Value
Но когда я вижу значение с плавающей запятой, это меня немного смущает из-за суффикса F
.
float testFloat = 3.0F;
| | | |
Type Name Value Type
Теперь в нем два типа, и без суффикса F
значение было бы двойным. Но почему это происходит, когда я могу объявить двойную переменную с помощью
double testDouble = 3.0D;
double
в качестве первого слова должно быть достаточно, не так ли? То же самое и с десятичным значением с суффиксом M:
decimal testDecimal = 3.0M;
Потом меня начинает сильно сбивать с толку, когда дело касается других суффиксов:
ulong bigOne = 2985825802805280508UL;
Я использовал ulong
в тесте раньше и знаю, что u
означает "без знака" и позволяет значению быть вдвое большим, чем обычно. Затем вы снова получите суффикс U и букву L, как сказал Google. Насколько я понимаю, «литералы» - это типы значений, содержащие числа. Но я не понимаю, почему этот ulong работает даже без суффикса?
ulong bigOne = 2985825802805280508;
Затем я попробовал что-то другое, чтобы понять важность суффикса
byte testLong = 12312UL;
Это не сработало, потому что значение слишком велико для байта (254), и суффикс не преобразует его в длинную переменную.
Почему для объявления недостаточно первого слова (типа)? Первого слова должно хватить, чтобы определить тип. Лучше всего всегда давать значениям суффикс?
U
для беззнакового, а не неназначенного. - person Lee Taylor   schedule 06.01.2016float
, не и не может обязательно определять тип числового литерала, который вы ей назначаете. - person Servy   schedule 06.01.2016