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.

Était-ce utile?

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 ou u, 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 ou l, 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 ou lu, il est de type ulong.

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 ou f est de type float. Par exemple, les littéraux 1f, 1.5f, 1e10f et 123.456F sont tous de type float.
  • Un littéral réel suffixé par D ou d est de type double. Par exemple, les littéraux 1d, 1.5d, 1e10d et 123.456D sont tous de type double.
  • Un littéral réel suffixé par M ou m est de type decimal. Par exemple, le 1m de littéraux, 1.5m, 1e10m et 123.456M sont tous de type decimal. 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, le 2.900m littéral sera analysé pour former la décimale avec signe 0, 2900 coefficient et 3 é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;.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top