107 votes

Qu'est-ce que le type de données non signé ?

J'ai vu ceci unsigned Le terme "typeless" a été utilisé plusieurs fois, mais je n'ai jamais vu d'explication à ce sujet. Je suppose qu'il existe un signed type. Voici un exemple :

static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int myrand(void) {
    next = next * 1103515245 + 12345;
    return((unsigned)(next/65536) % 32768);
}
void mysrand(unsigned seed) {
    next = seed;
}

Ce que j'ai recueilli jusqu'à présent :
- sur mon système, sizeof(unsigned) = 4 (allusion à un int non signé de 32 bits)
- il peut être utilisé comme raccourci pour convertir un autre type en version non signée :

signed long int i = -42;
printf("%u\n", (unsigned)i);

S'agit-il d'un C ANSI ou d'une simple extension du compilateur ?

168voto

Martin v. Löwis Points 61768

unsigned est en fait une abréviation de unsigned int et ainsi défini dans la norme C.

43voto

Polaris878 Points 7833

unsigned moyens unsigned int . signed moyens signed int . En utilisant seulement unsigned est une façon paresseuse de déclarer un unsigned int en C. Oui, il s'agit d'une norme ANSI.

19voto

Historiquement, en C, si l'on omettait un type de données, on supposait qu'il s'agissait d'un "int". Ainsi, "unsigned" est un raccourci pour "unsigned int". Cela a longtemps été considéré comme une mauvaise pratique, mais il existe encore une bonne quantité de code qui l'utilise.

11voto

ThibThib Points 3709

En C, unsigned est un raccourci pour unsigned int .

Il en va de même pour long qui est un raccourci pour long int

Il est également possible de déclarer un unsigned long (il s'agira d'un unsigned long int ).

Cela figure dans la norme ANSI

5voto

Rabin Sah Points 53

En C et C++

unsigned = unsigned int (Integer type)
signed   = signed int (Integer type)

Un nombre entier non signé contenant n bits peut avoir une valeur comprise entre 0 et (2^n-1) , soit 2^n valeurs différentes.

Un nombre entier non signé est soit positif, soit nul.

Les nombres entiers signés sont stockés dans un ordinateur en utilisant le complément à 2.

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