Existe-t-il un compilateur C qui considère le type de caractère par défaut comme non signé, sauf mention explicite de l'utilisateur dans le fichier ou les paramètres du projet?Un compilateur qui prend 'char' comme 'non signé'?
/Kanu_
Existe-t-il un compilateur C qui considère le type de caractère par défaut comme non signé, sauf mention explicite de l'utilisateur dans le fichier ou les paramètres du projet?Un compilateur qui prend 'char' comme 'non signé'?
/Kanu_
GCC fait. Mais seulement lors de la compilation pour les plates-formes où un char non signé est la convention, y compris ARM linux [*]. Lorsque GCC compile pour x86, le caractère par défaut doit être signé.
[*] Ou du moins, cela a été dans le passé. Pour tout ce que je sais, linux est passé à un autre ABI par défaut sur ARM depuis.
Mise à jour « 2013: compilateurs ARM (gcc, clang) pour défaut Android NDK à unsigned char
. Les compilateurs x86 et MIPS par défaut à signed char
.
Il est généralement une option pour le définir comme défaut, mais pas compilateur de ma connaissance fait ça.
La norme exige que la valeur entière de tous les caractères requis par la norme (AZ, az, 0-9, ponctuation de base, etc.) soit positive, donc tout système utilisant un codage dont les valeurs sont en dehors du plage de signed char
doit avoir char
être non signé. Je crois que cela signifie que tous les systèmes EBCDIC doivent avoir un char
qui n'est pas signé, mais je peux me tromper.
Si' CHAR_BIT'> 8 la plage de valeurs de 'char' est supérieure à -128..127 ou 0..255. Ainsi, sur un système EBCDIC avec CHAR_BIT == 9, un simple 'char' peut être signé. – pmg
Il y a. Dans MSVC vous utilisez ['/ J' (Type de caractères par défaut est unsigned)] (https://msdn.microsoft.com/en-us/library/0d294k5z.aspx). Dans GCC, vous utilisez ['-funsigned-char'] (http://stackoverflow.com/a/20518559/995714) –