Jeu
Le C définit un jeu de caractère pour les fichiers source et un jeu de caractères pour l’environnement d’exécution.
Il définit en outre pour ceux-ci un jeu de base et un jeu étendu.
Jeu de base : 95 caractères
Le jeu de base doit comporter
- les 26 lettres minuscules de l’alphabet latin
a
àz
- les 26 lettres majuscules de l’alphabet latin
A
àZ
- les 10 chiffres allant de
0
à9
, ceux-ci doivent etre contigus en mémoire et commencant a zero. C’est à dire que si0
a la valeur 15 dans le jeu,1
doit avoir la valeur 16,2
la valeur 17, et ainsi de suite. - les 29 caractères graphiques
!"#%&’()*+,-./:;<=>?[\]^_{|}~
(@
,$
et`
, ajoutés tardivament à l’ASCII, n’y sont pas présents) - un caractère représentant un espace
- un caractère représentant une tabulation horizontale
- un caractère représentant une tabulation verticale
- un caractère représentant un saut de page
Tous ces caractères doivent pouvoir être contenus dans un seul multiplet .
Noter que les derniers signes graphiques,
[\]^_{|}~
, sont absents d’un clavier Remington et
sont une inovation de l’
ASCII
, par
compatibilité, des
trigraphes
leur
sont associés.
Noter l’absence des caractères graphiques @$`
dans
le jeu de base :
dans les premières versions de l’ASCII ceux ci étaient
considérés comme variables et multilingues. Le
$
étant le caractère monétaire, pouvant être affiché,
£
sur un terminal anglais, @
pouvant être affiché À
sur un écran français, etc. Il est placé dans la table
ASCII avant le A par souci de
collation
.
Le C ne définit encore aujourd’hui
aucune grammaire à ces symboles.
Les caractères de contrôle d’affichage servent à accélérer l’impression d’un code source sur un téléscripteur: https://www.youtube.com/watch?v=qv5b1Xowxdk 🌍⤴
Ce jeu de base correspond à l’intersection de caractéristiques de l’ ASCII et de l’ EBCDIC .
Jeu du code source : 96 caractères
Le jeu source contioent le jeu de base ainsi qu’un caractère graphique représentant une « fin de ligne ». Il est représenté sur un seul octet en C, indépendament de sa représentation physique dans le fichier.
Jeu d’exécution : 99 caractères
Le jeu d’exécution doit comporter le jeu de base et en outre
- un caractère de controle d’alerte (bell)
- un caractère de controle de retour arrière (backspace)
- un caractère de controle de retour chariot
- un caractère de controle de saut de ligne
Jeu étendu: 98 caractères ou plus
Le jeu étendu doit comporter le jeu de base, avec une
correspondance un sur un entre les caractères du jeu de
base, les caractères « arobase @
»,
« dollar $
» et « accent grave `
» et tout autres
caractères de son choix.
Ces caractères doivent pouvoir être représentés avec un seul multiplet .
Un caractère étendu peut se trouver dans
- un identifiant (
int été
) (depuis le C99 ), - un nom de fichier inclus (
#include "été.h"
) - une chaine de caractère
"été"
- un caractère isolé
'é'
- un commentaire
/* été */
- un elément qui disparait au
préprocesseur
(
#define été ete
)
Si il se trouve ailleurs le code source du programme est mal formé.
A noter que de nombreux compilateurs ne tolèrent
pas les identifiants int t@t@
ou int t`t`
mais acceptent int t$t$
. Il est généralement hasardeux
d’avoir des identifiants internes comportant des caractères
étendus, et a proscrire pour des identifiants à visibilité
externe
Lecture
- https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2701.htm 🌍⤴ N 2701: @ and $ in source and execution character set