C # à court / long / int le format littéral?
-
26-10-2019 - |
Question
En C / C # / etc vous pouvez indiquer au compilateur qu'un littéral est pas ce qu'il semble être (c.-à-float
au lieu de double
, unsigned long
au lieu de int
:.
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
etc.
Pourriez point quelqu'un me à une liste de ces? Je suis à la recherche spécifiquement pour un suffixe pour short
ou Int16
.
La solution
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
Je pense que tout est ... il n'y a pas spécificateurs littéral pour court / ushort / octet / sbyte
Autres conseils
De §2.4.4.2 Entier littéraux :
Le type d'un littéral entier est déterminé comme suit:
- Si le littéral n'a pas de suffixe, il a le premier de ces types dans lesquels sa valeur peut être représentée:
.int
,uint
,long
,ulong
- Si le littéral est suffixé par
U
ouu
, il a le premier de ces types dans lesquels sa valeur peut être représentée:.uint
,ulong
- Si le littéral est suffixé par
L
oul
, il a le premier de ces types dans lesquels sa valeur peut être représentée:.long
,ulong
- Si le littéral est suffixé par
UL
,Ul
,uL
,ul
,LU
,Lu
,lU
oulu
, il est de typeulong
.
Et de §2.4.4.3 réel littéraux :
Si aucun suffixe de type réel est spécifié, le type du réel littéral est double. Dans le cas contraire, le suffixe de type réel détermine le type du réel littéral, comme suit:
- Un littéral réel suffixé par
F
ouf
est de typefloat
. Par exemple, les littéraux1f
,1.5f
,1e10f
et123.456F
sont tous de typefloat
.- Un littéral réel suffixé par
D
oud
est de typedouble
. Par exemple, les littéraux1d
,1.5d
,1e10d
et123.456D
sont tous de typedouble
.- Un littéral réel suffixé par
M
oum
est de typedecimal
. Par exemple, le1m
de littéraux,1.5m
,1e10m
et123.456M
sont tous de typedecimal
. Ce littéral est converti en une valeur décimale en prenant la valeur exacte, et, le cas échéant, arrondi à la valeur représentable la plus proche à l'aide de l'arrondissement de banquier (section 4.1.7). Toute échelle apparente dans le littéral est conservé à moins que la valeur est arrondie ou la valeur est égale à zéro (dans ce dernier cas, le signe et l'échelle seront 0). Par conséquent, le2.900m
littéral sera analysé pour former la décimale avec signe0
,2900
coefficient et3
échelle.
Si votre variable est pas déjà un court, vous devez jeter explicitement:
Object s = (Int16) 1;
Il n'y a pas un pour faire court. Il suffit d'utiliser short s = 1;
.