web-dev-qa-db-fra.com

Quelle est la difference entre “int” et “uint” / “long” et “ulong”?

Je connais int et long (nombres 32 bits et 64 bits), mais que sont uint et ulong?

91
Difference Engine

Les types de données primitifs précédés de "u" sont des versions non signées avec les mêmes tailles de bits. Cela signifie effectivement qu'ils ne peuvent pas stocker de nombres négatifs, mais qu'ils peuvent en revanche stocker des nombres positifs deux fois plus volumineux que leurs homologues signés. Les homologues signés n'ont pas de préfixe "u".

Les limites pour int (32 bits) sont les suivantes:

int: –2147483648 to 2147483647 
uint: 0 to 4294967295 

Et pour longtemps (64 bits):

long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
181
Isak Savo

uint et ulong sont les versions non signées de int et long. Cela signifie qu'ils ne peuvent pas être négatifs. Au lieu de cela, ils ont une valeur maximale plus grande.

 Type Min Max Conforme au CLS 
 Int -2 147 483 648 2 147 483 647 Oui 
 Uint 0 4 294 967 295 Non [.____] long 30h30 .____.]

Pour écrire un entier non signé dans votre code source, vous pouvez utiliser le suffixe u ou U, par exemple 123U.

Vous ne devez pas utiliser uint et ulong dans votre interface publique si vous souhaitez être conforme à CLS .

Lisez la documentation pour plus d'informations:

À propos, il y a aussi court et short et octet et sbyte .

35
Mark Byers

u signifie unsigned, donc ulong est un grand nombre sans signe. Vous pouvez stocker une plus grande valeur dans ulong que long, mais aucun nombre négatif n'est autorisé.

Une valeur de long est stockée en 64 bits, son premier chiffre indiquant s'il s'agit d'un nombre positif/négatif. tandis que ulong est également en 64 bits, avec tous les 64 bits pour stocker le nombre. le maximum d’ulong est donc 2 (64) -1, alors que long est 2 (63) -1.

10
Cheng Chen

La différence est que uint et ulong sont des types de données non signés, ce qui signifie que la plage est différente: ils n'acceptent pas les valeurs négatives:

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
8
srodriguez