2010-09-16 6 views

Antwort

123

Die primitiven Datentypen mit dem Präfix "u" sind vorzeichenlose Versionen mit derselben Bitgröße. Effektiv bedeutet dies, dass sie keine negativen Zahlen speichern können, aber auf der anderen Seite können sie positive Zahlen speichern, die doppelt so groß sind wie ihre signierten Gegenstücke. Die signierten Gegenstücke haben kein vorangestelltes "u".

Die Grenzwerte für int (32 Bit) sind:

int: –2147483648 to 2147483647 
uint: 0 to 4294967295 

Und für lange (64 Bit):

long: -9223372036854775808 to 9223372036854775807 
ulong: 0 to 18446744073709551615 
+5

Das ist ziemlich lustig, um von Hand auszuarbeiten. Eine 32-Bit-Variable mit Vorzeichen verwendet 1 Bit für das Vorzeichen (positiv oder negativ) und kann daher Werte zwischen -2^31 und + 2^31 - 1 –

+0

speichern, wenn Sie int und uint für die Verwendung vergleichen. –

+0

Was ist das C++ Äquivalent? – darkgaze

27

uint und ulong sind die unsignierten Versionen von int und long. Das bedeutet, dass sie nicht negativ sein können. Stattdessen haben sie einen größeren Maximalwert.

 
Type Min       Max       CLS-compliant 
int  -2,147,483,648    2,147,483,647     Yes 
uint 0        4,294,967,295     No 
long –9,223,372,036,854,775,808 9,223,372,036,854,775,807  Yes 
ulong 0        18,446,744,073,709,551,615 No 

Um eine wörtliche unsigned int in Ihrem Quellcode schreiben Sie das Suffix u oder U zum Beispiel 123U verwenden können.

Sie sollten nicht Uint und ulong in Ihrer öffentlichen Schnittstelle verwenden, wenn Sie CLS-Compliant sein möchten.

die Dokumentation für weitere Informationen lesen:

By the way, ist es auch short und ushort und byte und sbyte.

+0

Das ist interessant - was meinst du mit CLS-konform? Der Link verweist auf die MSDN-Dokumentation für int. Wenn mit "CLS" meinst du C# -Sprachespezifikation, dann verstehe ich nicht - die Spezifikation beschreibt klar sowohl Uint und ulong (Abschnitt 1.3) –

+0

@Isak Savo: Fester Link, danke für das Aufzeigen des Fehlers. –

+0

@Isak Savo: Es ist wichtig, CLS-kompatibel zu sein, wenn Sie eine Schnittstelle schreiben, die von anderen .NET-Sprachen als C# verwendet werden kann. –

6

Der Unterschied besteht darin, dass die uint und ulong unsigned Datentypen Bedeutung sind Der Bereich ist anders: Sie akzeptieren keine negativen Werte:

int range: -2,147,483,648 to 2,147,483,647 
uint range: 0 to 4,294,967,295 

long range: –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 
ulong range: 0 to 18,446,744,073,709,551,615 
9

u bedeutet unsigned, also ulong ist eine große Zahl ohne Vorzeichen. Sie können einen größeren Wert in ulong als long speichern, aber keine negativen Zahlen erlaubt.

Ein long Wert wird in 64-Bit gespeichert, wobei die erste Ziffer anzeigt, ob es sich um eine positive/negative Zahl handelt. während ulong ist auch 64-Bit, mit allen 64 Bit, um die Nummer zu speichern. also ist das Maximum von ulong 2 (64) -1, während lang 2 (63) -1 ist.

Verwandte Themen