Les constantes décimales s'écrivent de la manière usuelle (ex : 372). Les constantes octales doivent commencer par un zéro et ne comporter que des chiffres octaux (ex : 0477). Les constantes hexadécimales doivent commencer par 0x ou 0X et être composées des chiffres de 0 à 9, ainsi que des lettres de a à f sous leur forme majuscule ou minuscule (ex : 0x5a2b, 0X5a2b, 0x5A2B).
Une constante entière peut être suffixée par la lettre u ou U pour indiquer qu'elle doit être interprétée comme étant non signée. Elle peut également être suffixée par la lettre l ou L pour lui donner l'attribut de précision long.
forme de la constante | liste de types |
pas de suffixe, décimal | int, long int, unsigned long int |
pas de suffixe, octal ou hexadécimal | int, unsigned int, long int, unsigned long int |
suffixé par u ou U | unsigned int, unsigned long int |
suffixé par l ou L | long int, unsigned long int |
suffixé par ( u ou U) et ( l ou L) | unsigned long int |
010
devant être interprété en octal,
n'est pas égal à 10
.
\
.
'\
nb'
où nb est le code en octal du caractère.
Exemple :
constante caractère | sémantique |
'\0' |
null |
'\12' |
newline |
'\15' |
carriage return |
'\33' |
escape |
'\x
nb'
où nb est le code en hexadécimal du caractère.
Exemple :
constante caractère | sémantique |
'\x0A' |
newline |
'\x0D' |
return |
'\x1B' |
escape |
constante caractère | sémantique |
'\n' |
new line |
'\t' |
horizontal tabulation |
'\v' |
vertical tabulation |
'\b' |
back space |
'\r' |
carriage return |
'\f' |
form feed |
'\a' |
audible alert |
constante caractère | sémantique |
'\'' |
' |
'\\' |
\ |
constante caractère | sémantique |
'\"' ou '"' |
" |
'\?' ou '?' |
? |
[]
Sémantique :
Une constante caractère est de type int et a pour valeur le code
du caractère dans le codage utilisé par la machine.
"
et ?
disposent ils de deux
notations possibles ?
"
peut être représenté par la notation '\"'
parce que celle-ci doit être utilisée dans les chaînes de caractères
(voir plus loin 1.9).
Pour des raisons de symétrie, les concepteurs du langage n'ont pas voulu qu'une
notation valable pour une chaînes de caractères ne soit pas valable pour un
caractère.
?
est un cas à part à cause de l'existence des
trigraphes. Les trigraphes sont des séquences de trois caractères
permettant de désigner les caractères # [ ] \ ^ { } | ~
.
En effet, les terminaux conformes à la norme ISO 646:1983
ont remplacé ces caractères par des caractères nationaux.
Les français, par exemple, connaissent bien le problème des {
et des
}
qui se transforment en é et è.
La norme ANSI a défini les 9 trigraphes suivants :
trigraphe | sémantique |
??= |
# |
??( |
[ |
??) |
] |
??/ |
\ |
??' |
^ |
??< |
{ |
??> |
} |
??! |
| |
??- |
~ |
L'exposant est introduit par la lettre e sous la forme minuscule ou majuscule. L'exposant est un nombre décimal éventuellement signé.
Une constante flottante peut être suffixée par l'une quelconque des lettres f, F, l, L.
La valeur de la constante mantisse e exposant est mantisse .
Si la valeur résultante ne correspond pas au type, la valeur est arrondie vers une valeur supérieure ou inférieure (le choix dépend de l'implémentation).
notation C | notation mathématique |
2. | 2 |
.3 | 0.3 |
2.3 | 2.3 |
2e4 | |
2.e4 | |
.3e4 | |
2.3e4 | |
2.3e-4 |