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 si0a la valeur 15 dans le jeu,1doit avoir la valeur 16,2la 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