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 ?
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 ?
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é.
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 `` .
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 valeurs0
ouSCHAR_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.
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.