C# kurz/lang/int literales Format?
-
26-10-2019 - |
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
.
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
oderu
, Es hat die erste dieser Typen, in der sein Wert dargestellt werden kann:uint
,ulong
.- Wenn das Literal von satt wird von durch
L
oderl
, 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
, oderlu
, es ist vom Typulong
.
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
oderf
ist vom Typfloat
. Zum Beispiel die Literale1f
,1.5f
,1e10f
, und123.456F
sind alle Typenfloat
.- Ein echtes buchstäbliches Suffium von
D
oderd
ist vom Typdouble
. Zum Beispiel die Literale1d
,1.5d
,1e10d
, und123.456D
sind alle Typendouble
.- Ein echtes buchstäbliches Suffium von
M
oderm
ist vom Typdecimal
. Zum Beispiel die Literale1m
,1.5m
,1e10m
, und123.456M
sind alle Typendecimal
. 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äbliche2.900m
wird analysiert, um die Dezimalzahl mit Zeichen zu bilden0
, Koeffizient2900
, und skalieren3
.
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;
.