Le mot clé unsigned par défaut est-il un type de données spécifique en C ++? J'essaye d'écrire une fonction pour une classe pour le prototype:
unsigned Rotate(unsigned object, int count)
Mais je ne comprends pas vraiment ce que cela unsigned
signifie. Ne devrait-il pas être comme unsigned int
ou quelque chose?
Types entiers:
short -> signed short signed short unsigned short int -> signed int signed int unsigned int signed -> signed int unsigned -> unsigned int long -> signed long signed long unsigned long
Attention au char:
char (is signed or unsigned depending on the implmentation) signed char unsigned char
la source
Oui, signé et non signé peuvent également être utilisés comme spécificateurs de type autonomes
Les types de données entiers char, short, long et int peuvent être signés ou non signés en fonction de la plage de nombres à représenter. Les types signés peuvent représenter des valeurs positives et négatives, tandis que les types non signés ne peuvent représenter que des valeurs positives (et zéro).
Un entier non signé contenant n bits peut avoir une valeur comprise entre 0 et 2 n - 1 (soit 2 n valeurs différentes).
Cependant, signé et non signé peuvent également être utilisés comme spécificateurs de type autonomes, ce qui signifie respectivement les entiers signés et int non signés. Les deux déclarations suivantes sont équivalentes:
unsigned NextYear; unsigned int NextYear;
la source
short
- clés etlong
sont également des modificateurs de type . Si vous écrivezshort s
, cela signifie en faitshort int s
, tout commeunsigned u
signifie réellementunsigned int u
. (etunsigned short
signifieunsigned short int
)Vous pouvez en savoir plus sur le mot clé unsigned dans la référence C ++ .
Il existe deux types différents dans ce domaine, signé et non signé. La valeur par défaut des entiers est signée, ce qui signifie qu'ils peuvent avoir des valeurs négatives.
Sur un système 32 bits, un entier est de 32 bits, ce qui signifie qu'il peut contenir une valeur d'environ 4 milliards.
Et quand il est signé, cela signifie que vous devez le diviser, laissant -2 milliards à +2 milliards.
Lorsqu'elle n'est pas signée, la valeur ne peut pas contenir de nombres négatifs, donc pour les entiers, cela signifierait 0 à +4 milliards.
Il y a un peu plus d'informations à ce sujet sur Wikipedia .
la source
Oui, ça veut dire
unsigned int
. Auparavant, si vous ne spécifiiez pas de type de données dans C, il y avait de nombreux endroits où il était simplement supposéint
. C'était essayer, par exemple, des types de retour de fonction.Cette verrue a été en grande partie éradiquée, mais vous rencontrez ses derniers vestiges ici. À mon humble avis, le code doit être corrigé pour
unsigned int
éviter le genre de confusion que vous rencontrez.la source