7
votes

Convertir -1 en Uint C #

Conversion -1 en Uint ne fonctionnera pas "((UINT) (- 1))" Solution?

num10 = ((uint)(-1)) >> (0x20 - num9);


2 commentaires

-1 est en dehors de la gamme d'un entier non signé.


Le message d'erreur ne vous dit pas la solution?


5 Réponses :


1
votes

Un entier non signé ne peut représenter que des valeurs positives. Il ne peut pas représenter -1.

Si vous souhaitez représenter des valeurs négatives, vous devez utiliser un signé type, comme int .


0 commentaires

2
votes

Le compilateur vous dit ce que vous devez faire: xxx

Cependant, cela peut ne pas vous donner le résultat que vous souhaitez.


0 commentaires

11
votes

Utilisez

uint num10 = (uint.MaxValue) >> (0x20u - num9);


0 commentaires

1
votes

Rechercher le non coché contexte.


0 commentaires

1
votes

Vous pouvez en effet avoir quelque chose qui ressemble quelque peu à des chiffres négatifs. Ils ont la fonctionnalité que x + (-x) == 0

Pour créer un "négatif" uint uint en C # sans régions non cochées, vous pouvez plutôt utiliser l'équivalent (~ x) + 1 qui est identique au -x < / p>


0 commentaires