Par exemple:
char a[] = "abc\0";
La norme C indique-t-elle qu'un autre octet de valeur 0
Doit être ajouté même si la chaîne a déjà un zéro à la fin? Alors, sizeof(a)
est-il égal à 4 ou 5?
Tous les littéraux de chaîne ont un terminateur nul implicite, quel que soit le contenu de la chaîne.
Le standard (6.4.5 String Literals) dit:
Un octet ou un code de valeur zéro est ajouté à chaque séquence de caractères multi-octets qui résulte d'un ou plusieurs littéraux de chaîne.
Ainsi, la chaîne littérale "abc\0"
contient le terminateur nul implicite, en plus de celui explicite. Ainsi, le tableau a
contient 5 éléments.