tipos - C#corto/largo/int formato literal?
tipos de datos en c# (5)
De §2.4.4.2 literales enteros :
El tipo de un literal entero se determina de la siguiente manera:
- Si el literal no tiene sufijo, tiene el primero de estos tipos en que se puede representar su valor:
int
,uint
,long
,ulong
.- Si el literal tiene el sufijo
U
ou
, tiene el primero de estos tipos en que se puede representar su valor:uint
,ulong
.- Si el literal tiene el sufijo
L
ol
, tiene el primero de estos tipos en que se puede representar su valor:long
,ulong
.- Si el literal tiene el sufijo
UL
,UL
,UL
,UL
,LU
,LU
,LU
oLU
, es de tipoulong
.
Y a partir de §2.4.4.3 literales reales :
Si no se especifica un sufijo de tipo real, el tipo del literal real es el doble. De lo contrario, el sufijo de tipo real determina el tipo del literal real, de la siguiente manera:
- Un literal real con el sufijo
F
of
es de tipofloat
. Por ejemplo, los literales1f
,1.5f
,1e10f
y123.456F
son todos de tipofloat
.- Un literal real con sufijo
D
od
es del tipodouble
. Por ejemplo, los literales1d
,1.5d
,1e10d
y123.456D
son todos del tipodouble
.- Un literal real con sufijo
M
om
es de tipodecimal
. Por ejemplo, los literales1m
,1.5m
,1e10m
y123.456M
son todos de tipodecimal
. Este literal se convierte a un valor decimal tomando el valor exacto y, si es necesario, redondeando al valor representable más cercano utilizando el redondeo bancario (Sección 4.1.7). Cualquier escala aparente en el literal se conserva a menos que el valor sea redondeado o el valor sea cero (en este último caso, el signo y la escala serán 0). Por lo tanto, los2.900m
literales se analizarán para formar el decimal con el signo0
, el coeficiente2900
y la escala3
.
En C / C # / etc. puede decirle al compilador que un número literal no es lo que parece ser (es decir, float
lugar de double
, unsigned long
lugar de int
:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
etc.
¿Podría alguien señalarme una lista de estos? Estoy buscando específicamente un sufijo para short
o Int16
.
No hay uno para abreviar. Solo use short s = 1;
.
Si desea evitar los moldes de tipo que a menudo causan advertencias con short.Parse("1")
, short.Parse("1")
también puede ser una alternativa.
Si su variable aún no es corta, debe convertirla explícitamente:
Object s = (Int16) 1;
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
Creo que eso es todo ... no hay especificadores literales para short / ushort / byte / sbyte