Frage

In C / C# / usw. können Sie dem Compiler mitteilen, dass eine wörtliche Nummer nicht so ist, wie es scheint (dh,,,,, float Anstatt von double, unsigned long Anstatt von int:

var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long

usw.

Könnte mich jemand auf eine Liste dieser zeigen? Ich suche speziell nach einem Suffix für short oder Int16.

War es hilfreich?

Lösung

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

Ich denke, das ist alles ... Es gibt keine wörtlichen Angaben für kurze/ushort/byte/sbyte

Andere Tipps

Aus §2.4.4.2 Ganzzahl Literale:

Die Art einer Ganzzahl -Literal wird wie folgt bestimmt:

  • Wenn das Literal kein Suffix hat, hat er die erste dieser Typen, in der sein Wert dargestellt werden kann: int, uint, long, ulong.
  • Wenn das Literal von satt wird von durch U oder u, Es hat die erste dieser Typen, in der sein Wert dargestellt werden kann: uint, ulong.
  • Wenn das Literal von satt wird von durch L oder l, Es hat die erste dieser Typen, in der sein Wert dargestellt werden kann: long, ulong.
  • Wenn das Literal von satt wird von durch UL, Ul, uL, ul, LU, Lu, lU, oder lu, es ist vom Typ ulong.

Und von §2.4.4.3 echte Literale:

Wenn kein reales Typsuffix angegeben ist, ist der Typ des realen Wörtals doppelt so hoch. Andernfalls bestimmt das reale Typsuffix die Art des wahren Wörtals wie folgt:

  • Ein echtes buchstäbliches Suffium von F oder f ist vom Typ float. Zum Beispiel die Literale 1f, 1.5f, 1e10f, und 123.456F sind alle Typen float.
  • Ein echtes buchstäbliches Suffium von D oder d ist vom Typ double. Zum Beispiel die Literale 1d, 1.5d, 1e10d, und 123.456D sind alle Typen double.
  • Ein echtes buchstäbliches Suffium von M oder m ist vom Typ decimal. Zum Beispiel die Literale 1m, 1.5m, 1e10m, und 123.456M sind alle Typen decimal. Dieses wörtliche Literal wird durch den genauen Wert auf einen Dezimalwert umgewandelt und gegebenenfalls mit der Rundung des Banker auf den nächsten darstellbaren Wert (Abschnitt 4.1.7) abgerundet. Jede im wörtliche Literal erscheinende Skala bleibt erhalten, es sei denn, der Wert ist abgerundet oder der Wert Null (in dem letztere Fall das Vorzeichen und die Skala 0 beträgt). Daher der buchstäbliche 2.900m wird analysiert, um die Dezimalzahl mit Zeichen zu bilden 0, Koeffizient 2900, und skalieren 3.

Wenn Ihre Variable nicht schon kurz ist, müssen Sie sie explizit angeben:

Object s = (Int16) 1;

Es gibt keine kurze. Benutz einfach short s = 1;.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top