En C / C # / etc., vous pouvez dire au compilateur qu'un nombre littéral n'est pas ce qu'il semble être (c'est-à-dire 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
.
Réponses:
Je pense que c'est tout ... il n'y a pas de spécificateurs littéraux pour short / ushort / byte / sbyte
la source
byte b = 42;
)somebyte = (byte)(somebool ? 1 : 0);
1l
et les1L
deux seront traités comme des entiers longs mais sont certainement1L
plus lisibles que1l
.À partir du §2.4.4.2 Littéraux entiers :
Et à partir du §2.4.4.3 littéraux réels :
la source
Si votre variable n'est pas déjà courte, vous devez la caster explicitement:
la source
Il n'y en a pas un pour faire court. Utilisez simplement
short s = 1;
.la source
short z1 = (0 == 1 ? 0 : 1);
Mais cela ne fonctionne pas:short y = 1; short z2 = (0 == 1 ? 0 : y);
(désolé, pas de sauts de ligne autorisés dans les commentaires)0
dans la branche if est converti en unint
avant l'affectation àz2
. Si vous utilisez deuxshort
s dans vos branches, le résultat sera à nouveau unshort
. Avec le if / else, le compilateur ne peut pas savoir que votreint
peut être représenté commeshort
.