180 votes

Char, signé ou non signé par défaut ?

Dans le livre « Référence complète de C », il est mentionné que char est par défaut non signé.

Mais je suis en train de vérifier cela avec GCC ainsi que Visual Studio. Il le prend comme signé par défaut.

Lequel est correct ?

236voto

Alok Singhal Points 33073

Le livre est mauvais. La norme ne précise pas si simple char est signé ou non signé.

En fait, la norme définit trois types distincts: char, signed char, et unsigned char. Si vous #include <limits.h> , puis regardez - CHAR_MIN, vous pouvez trouver de si simple char est signed ou unsigned (si CHAR_MIN est inférieur à 0 ou égal à 0), mais même alors, les trois types distincts d'aussi loin que la norme est concerné.

74voto

R Samuel Klatchko Points 44549

Comme le souligne Alok, la norme qui laisse jusqu'à la mise en œuvre.

Pour gcc, la valeur par défaut est signé, mais vous pouvez le modifier qu’avec . * **Remarque :** pour gcc dans Android NDK, la valeur par défaut n’est pas signé*. Vous pouvez également explicitement demander des caractères signés avec .

MSVC, la valeur par défaut est signé, mais vous pouvez le modifier qu’avec `` .

39voto

Michael Burr Points 181287

Le standard a ceci à dire à propos de la signature de l'-ness de type char:

La mise en œuvre doit définir char d'avoir la même gamme, la représentation, et le comportement que soit signé char ou unsigned char.

et dans une note de bas de page:

CHAR_MIN, défini en <limits.h>, sera l'une des valeurs 0 ou SCHAR_MIN, et ceci peut être utilisé pour distinguer les deux options. Quel que soit le choix fait, char est un type distinct des deux autres et n'est pas compatible avec les deux.

8voto

Ravi Rathi Points 41

Selon le livre The C Programming Language par Dennis Ritchie, qui est le standard de facto pour ANSI C, plaines caractères soit signées ou non signées dépendent la machine, mais les caractères imprimables sont toujours positifs.

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