277 votes

Format "court", "long", et " int " littérale en C#?

Je ne suis pas sûr de ce que le vrai nom de cette est que c'est tellement dur de google:

En C, C++, etc. vous pouvez indiquer au compilateur qu'un nombre littéral n'est pas ce qui apparaît, c'est -, X, 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.

Existe t il une liste de ces? Je suis spécifiquement à la recherche d'un suffixe short ou Int16.

442voto

Thomas Levesque Points 141081
var d = 1.0d; // 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 littérale des prescripteurs à court/ushort/byte/sbyte

54voto

BoltClock Points 249668

De §2.4.4.2 les littéraux Entiers:

Le type d'un littéral entier est déterminé comme suit:

  • Si la traduction littérale n'a pas de suffixe, il a la première de ces types dans lequel sa valeur peut être représentée: int, uint, long, ulong.
  • Si la traduction littérale est suffixé par U ou u, il a la première de ces types dans lequel sa valeur peut être représentée: uint, ulong.
  • Si la traduction littérale est suffixé par L ou l, il a la première de ces types dans lequel sa valeur peut être représentée: long, ulong.
  • Si la traduction littérale est suffixé par UL, Ul, uL, ul, LU, Lu, lUou lu, il est de type ulong.

Et de §2.4.4.3 Réel littéraux:

Si aucun type réel est spécifié, le type de la vraie littérale est double. Sinon, le vrai type de suffixe détermine le type de la vraie littérale, comme suit:

  • Un vrai littérale 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 vrai littérale 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 vrai littérale suffixé par M ou m est de type decimal. Par exemple, les littéraux 1m, 1.5m, 1e10m, et 123.456M sont tous de type decimal. Le littéral de ce qui est converti en une valeur décimale en prenant la valeur exacte, et, si nécessaire, arrondi au plus proche de la valeur représentable à l'aide de l'arrondi (Section 4.1.7). Toute taille apparente dans le sens littéral est conservée, sauf la valeur est arrondie ou la valeur est zéro (dans lequel ce dernier cas, le signe et l'ampleur sera de 0). Par conséquent, la traduction littérale 2.900m seront analysés pour former le décimal avec signe 0, le coefficient d' 2900, et l'ampleur 3.

10voto

Chris Points 771

Si la variable n'est pas déjà un court, vous devez lancer explicitement :

Object s = (Int16) 1;

6voto

Random832 Points 9199

Il n'y a pas de court. Suffit d'utiliser short s = 1;.

4voto

Jon of All Trades Points 1925

Deuxième résultat lorsque vous Tapez "c# littéral suffixes": http://www.dotnetperls.com/suffix.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X