Je connais environ int
et long
(nombres 32 bits et 64 bits), mais quels sont uint
et ulong
?Quelle est la différence entre "int" et "uint"/"long" et "ulong"?
Répondre
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. En effet, cela signifie qu'ils ne peuvent pas stocker de nombres négatifs, mais d'un autre côté ils peuvent stocker des nombres positifs deux fois plus grands que leurs homologues signés. Les homologues signés n'ont pas de préfixe "u".
Les limites 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 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
Pour écrire un entier non signé littéral dans votre code source, vous pouvez utiliser le suffixe u
ou U
par exemple 123U
.
Vous ne devriez pas utiliser uint et ulong dans votre interface publique si vous souhaitez être CLS-Compliant.
Lisez la documentation pour plus d'informations:
Par ailleurs, il y a aussi short et ushort et byte et sbyte.
Ceci est intéressant - que voulez-vous dire par rapport à CLS? Le lien va à la documentation MSDN pour int. Si par "CLS" vous voulez dire la spécification de langage C# alors je ne comprends pas - la spécification décrit clairement à la fois uint et ulong (section 1.3) –
@Isak Savo: Lien fixe, merci d'avoir signalé l'erreur. –
@Isak Savo: Il est important d'être compatible avec CLS si vous écrivez une interface qui pourrait être utilisée par d'autres langages .NET que C#. –
La différence est que le uint
et ulong
sont des types de données non signés, ce qui signifie 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
u
signifie unsigned
, donc ulong
est un grand nombre sans signe. Vous pouvez stocker une valeur plus élevée dans ulong
que long
, mais aucun nombre négatif 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 les 64 bits pour stocker le nombre. donc le maximum de ulong est 2 (64) -1, alors que long est 2 (63) -1.
C'est assez amusant de travailler à la main. Une variable signée 32 bits utilise 1 bit pour le signe (positif ou négatif), donc peut stocker des valeurs entre -2^31 et + 2^31 - 1 –
en comparant int et uint pour l'usage, lequel est faisable? –
Quel est l'équivalent C++? – darkgaze