82 votes

Mot clé "Unsigned" en C++

Le mot-clé unsigned correspond-il par défaut à un type de données en C++ ? J'essaie d'écrire une fonction pour une classe pour le prototype :

unsigned Rotate(unsigned object, int count)

Mais je ne comprends pas vraiment ce que signifie non signé. Je pensais que c'était comme unsigned int ou quelque chose comme ça. Merci.

90voto

futureelite7 Points 6247

Desde el lien ci-dessus :

Plusieurs de ces types peuvent être modifiés à l'aide des mots-clés signed, unsigned, short et long. Lorsque l'un de ces modificateurs de type est utilisé seul, on suppose que le type de données est int.

Cela signifie que vous pouvez supposer que l'auteur utilise des ints.

38voto

Loki Astari Points 116129

Types de nombres 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

Faites attention au charbon :

char  (is signed or unsigned depending on the implmentation)
signed char
unsigned char

21voto

Prasoon Saurav Points 47488

Le mot clé unsigned correspond-il par défaut à un type de données en C++ ?

Oui, signé et non signé peuvent également être utilisés comme spécificateurs de type autonomes.

Les types de données entières 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 nombre entier non signé contenant n bits peut avoir une valeur comprise entre 0 et 2. n - 1 (qui est 2 n valeurs différentes).

Cependant, signed et unsigned peuvent également être utilisés comme spécificateurs de type autonomes, avec la même signification que signed int et unsigned int respectivement. Les deux déclarations suivantes sont équivalentes :

unsigned NextYear;
unsigned int NextYear;

8voto

Filip Ekberg Points 22189

Vous pouvez lire sur le mot-clé unsigned dans la référence C++ .

Il existe deux types différents en la matière, les signés et les non signés. Par défaut, les entiers sont signés, ce qui signifie qu'ils peuvent avoir des valeurs négatives.

Sur un système 32 bits, un nombre entier est de 32 bits, ce qui signifie qu'il peut contenir une valeur de ~4 milliards.

Et lorsqu'il est signé, cela signifie que vous devez le diviser, ce qui laisse -2 milliards à +2 milliards.

Lorsqu'il est non signé, la valeur ne peut pas contient tous les nombres négatifs, donc pour les nombres entiers, cela signifie 0 à +4 milliards.

Vous trouverez un peu plus d'informations à ce sujet sur le site suivant Wikipedia .

3voto

Omnifarious Points 25666

Oui, ça veut dire unsigned int . Avant, si on ne spécifiait pas un type de données en C, il y avait beaucoup d'endroits où il supposait simplement que int . C'était le cas, par exemple, des types de retour des fonctions.

Cette verrue a été en grande partie éradiquée, mais vous rencontrez ici ses derniers vestiges. IMHO, le code devrait être corrigé pour dire unsigned int pour éviter le genre de confusion que vous rencontrez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X