6
votes

Tout compilateur qui prend 'char »comme« non signé »?

Y a-t-il un compilateur C qui prend le type de caractère par défaut comme non signé, sauf mention explicitement par l'utilisateur dans les paramètres de fichier ou de projet?

/ kanu _


0 commentaires

3 Réponses :


2
votes

Il y a généralement une option pour la définir par défaut, mais aucun compilateur de ma connaissance ne le fait.


1 commentaires

Il y a. Dans MSVC, vous utilisez / j (type de caractères de caractères par défaut est non signé) . Dans GCC, vous utilisez -Funsigned-char



13
votes

GCC fait. Mais uniquement lors de la compilation de plateformes où un caractère non signé est la convention, y compris le bras Linux [*]. Lorsque GCC compile pour X86, la valeur par défaut est pour être signée.

[*] ou au moins il a été dans le passé. Pour tout ce que je sais que Linux, Linux est passé à un bras différent de l'ABI par défaut depuis.

Mise à jour '2013: Compilateurs de bras (GCC, Clang) pour Android NDK par défaut à Unsigné Char . Les compilateurs X86 et MIPS par défaut à signé Char .


0 commentaires

4
votes

La norme nécessite que la valeur entière de tous les caractères requise par la norme (AZ, AZ, 0-9, la ponctuation de base, etc.) soit positive, donc tout système utilisant un codage dans lequel ces valeurs de caractères sont en dehors de la plage. de signé Char doit avoir avoir un fichier sans signification. Je crois que cela signifie que tous les systèmes EBCDIC doivent avoir un clair char non signé, mais je peux me tromper.


1 commentaires

Si Char_bit > 8 La plage de valeurs pour Char est supérieure à -128..127 ou 0..255. Donc, sur un système EBCDIC avec char_bit == 9, un fichier char peut être signé.