Dans C/C #/etc., vous pouvez indiquer au compilateur qu’un nombre littéral n’est pas ce qu’il semble être (c.-à-d., 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.
Quelqu'un pourrait-il m'indiquer une liste de ceux-ci? Je recherche spécifiquement un suffixe pour short
ou Int16
.
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 c'est tout ... il n'y a pas de spécificateurs littéraux pour short/ushort/byte/sbyte
De §2.4.4.2 Littéraux entiers :
Le type d'un littéral entier est déterminé comme suit:
- Si le littéral n'a pas de suffixe, il possède le premier de ces types dans lequel sa valeur peut être représentée:
int
,uint
,long
,ulong
.- Si le littéral est suffixé par
U
ouu
, il possède le premier de ces types dans lequel sa valeur peut être représentée:uint
,ulong
.- Si le littéral est suffixé par
L
oul
, il possède le premier de ces types dans lequel 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 à partir de §2.4.4.3 Littéraux réels :
Si aucun suffixe de type réel n'est spécifié, le type du littéral réel est double. Sinon, le suffixe de type réel détermine le type du littéral réel, comme suit:
- Un vrai littéral suffixé par
F
ouf
est de typefloat
. Par exemple, les littéraux1f
,1.5f
,1e10f
, et123.456F
sont tous de typefloat
.- Un vrai littéral suffixé par
D
oud
est de typedouble
. Par exemple, les littéraux1d
,1.5d
,1e10d
, et123.456D
sont tous de typedouble
.- Un vrai littéral suffixé par
M
oum
est de typedecimal
. Par exemple, les littéraux1m
,1.5m
,1e10m
, et123.456M
sont tous de typedecimal
. Ce littéral est converti en valeur décimale en prenant la valeur exacte et, si nécessaire, en arrondissant à la valeur représentable la plus proche à l'aide de l'arrondissement bancaire (Section 4.1.7). Toute échelle apparente dans le littéral est conservée sauf si la valeur est arrondie ou si la valeur est zéro (dans ce dernier cas, le signe et l'échelle seront 0). Par conséquent, le littéral2.900m
sera analysé pour former la décimale avec le signe0
, coefficient2900
et échelle3
.
Si votre variable n'est pas déjà courte, vous devez la lancer explicitement:
Object s = (Int16) 1;
Il n'y en a pas un pour faire court. Il suffit d'utiliser short s = 1;
.