Quelle est la différence entre «int» et «uint» / «long» et «ulong»?

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

Les types de données primitifs préfixés par “u” sont des versions non signées avec les mêmes tailles de bits. En effet, cela signifie qu’ils ne peuvent pas stocker de nombres négatifs, mais qu’ils peuvent également stocker des nombres positifs deux fois plus importants que leurs homologues signés. Les homologues signés n’ont pas le préfixe “u”.

Les limites pour int (32 bits) sont:

 int: –2147483648 to 2147483647 uint: 0 to 4294967295 

Et pour longtemps (64 bits):

 long: -9223372036854775808 to 9223372036854775807 ulong: 0 to 18446744073709551615 

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 compatible CLS
 int -2 147 483 648 2 147 483 647 Oui
 uint 0 4 294 967 295 Non
 long –9 223 372 036 854 775 808 9 223 372 036 854 775 807 Oui
 ulong 0 18,446,744,073,709,551,615 Non

Pour écrire un littéral unsigned int 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:

  • int
  • uint
  • longue
  • ulong

En passant, il y a aussi court et ushort et octet et sbyte .

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

Une valeur 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 64 bits, avec tous 64 bits pour stocker le nombre. donc le maximum de ulong est 2 (64) -1, alors que long est 2 (63) -1.

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