Ich bin neu in C# und möchte verstehen, wie Werte funktionieren. Wenn ich einen normalen Integer-Wert betrachte, hat er 3 wichtige Teile: Typ, Name und Wert.C# -Suffix hinter numerischem Literal
int testInt = 3;
| | |
Type Name Value
Aber wenn ich einen Float-Wert sehen es verwirrt mich ein wenig wegen der Endung F
.
float testFloat = 3.0F;
| | | |
Type Name Value Type
Jetzt gibt es zwei Typen drin, und ohne die F
Suffix würde der Wert eine doppelt so hoch sein. Aber warum ist das passiert, wenn ich die doppelte Variable deklarieren können mit
double testDouble = 3.0D;
Die double
als das erste Wort genug sein sollte, sollte es nicht? Das gleiche gilt für den Dezimalwert mit dem Suffix M:
decimal testDecimal = 3.0M;
Dann ist es wirklich mich beginnt verwirrend, wenn es um die anderen Suffixe kommt:
ulong bigOne = 2985825802805280508UL;
I verwendet ulong
in einem Test vor und wissen, dass Die u
ist für "unsigned" und lässt den Wert doppelt so hoch wie normal sein. Dann bekommst du das U wieder als Suffix und das L für wörtlich wie Google gesagt hat. Wie ich es verstehe, sind "Literale" Werttypen, die Zahlen enthalten. Aber was ich nicht verstehe ist, warum funktioniert dieses ulong auch ohne das Suffix?
ulong bigOne = 2985825802805280508;
Dann habe ich versucht, etwas anderes die Bedeutung des Suffix
byte testLong = 12312UL;
Das hat nicht funktioniert, weil der Wert zu hoch ist, zu verstehen für Byte (254) und das Suffix nicht wandelt es in eine lange Variable.
Warum reicht das erste Wort (Typ) nicht für eine Deklaration? Das erste Wort sollte ausreichen, um den Typ zu bestimmen. Ist es die beste Vorgehensweise, den Werten immer ein Suffix zu geben?
Sie haben Recht, eine Typdeklaration ist genug, wenn es auch eine Aufgabe gibt. Aus diesem Grund wurde das Schlüsselwort var zu C# hinzugefügt: https://msdn.microsoft.com/en-us/library/bb383973.aspx – Max
'U' ist für unsigned, nicht unassigned. –
Und was ist mit Berechnungen wie 4.0/3? Sollte es einzelne oder doppelte Genauigkeit verwenden? Das beeinflusst das Ergebnis wirklich. Oder überlegen 2000000000 * 3? Ist es ein Überlauf oder nur ein langer? Sie bestimmen nicht immer direkt Werte. – dryman