Литеральный формат C# short/long/int?
в C / C# / etc. вы можете сказать компилятору, что литеральное число не то, что кажется (т. е.,float
вместо double
,unsigned long
вместо int
:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
etc.
может кто-нибудь точка меня в список? Я специально ищу суффикс для short
или Int16
.
5 ответов:
var d = 1.0d; // double var d0 = 1.0; // double var d1 = 1e+3; // double var d2 = 1e-3; // double var f = 1.0f; // float var m = 1.0m; // decimal var i = 1; // int var ui = 1U; // uint var ul = 1UL; // ulong var l = 1L; // long
Я думаю, что это все... нет литеральных спецификаторов для short/ushort/byte / sbyte
с §2.4.4.2 целочисленные литералы:
тип целочисленного литерала определяется следующим образом:
- если литерал не имеет суффикса, то есть первый из этих типов, в которых его значение может быть представлено:
int
,uint
,long
,ulong
.- если литерал имеет суффикс
U
илиu
, он имеет первый из этих типов, в котором его значение может быть представлено:uint
,ulong
.- если литерал имеет суффикс
L
илиl
, он имеет первый из этих типов, в котором его значение может быть представлено:long
,ulong
.- если литерал имеет суффикс
UL
,Ul
,uL
,ul
,LU
,Lu
,lU
илиlu
, это типаulong
.если суффикс реального типа не указан, то тип реального типа литерал-это двойник. В противном случае суффикс реального типа определяет тип реального литерала следующим образом:
- настоящий литерал с суффиксом
F
илиf
типаfloat
. Например, литералы1f
,1.5f
,1e10f
и123.456F
все типаfloat
.- настоящий литерал с суффиксом
D
илиd
типаdouble
. Например, литералы1d
,1.5d
,1e10d
и123.456D
все типdouble
.- настоящий литерал с суффиксом
M
илиm
типаdecimal
. Например, литералы1m
,1.5m
,1e10m
и123.456M
все типаdecimal
. Этот литерал преобразуется в десятичное значение путем взятия точного значения и, при необходимости, округления до ближайшего представимого значения с помощью округления банкира (раздел 4.1.7). Любой масштаб, видимый в литерале, сохраняется, если значение не округлено или значение равно нулю (в последнем случае знак и масштаб будут равны 0). Следовательно, литерал2.900m
будет проанализирован, чтобы сформировать десятичное число со знаком0
, коэффициент2900
, и масштаб3
.