En terminant une chaîne, il me semble que logiquement char c=0
est équivalent à char c='\0'
, puisque l'octet "null" (ASCII 0) est 0
, mais généralement les gens ont tendance à faire '\0'
au lieu. Est-ce purement par préférence ou devrait-il s'agir d'une meilleure "pratique"?
Quel est le choix préféré?
EDIT: K & R dit : "La constante de caractère '\0'
représente le caractère avec la valeur zéro, le caractère nul. '\0'
est souvent écrit à la place de 0
pour souligner le caractère de certaines expressions, mais la valeur numérique n’est que 0
.
http://en.wikipedia.org/wiki/Ascii#ASCII_control_code_chart
Binary Oct Dec Hex Abbr Unicode Control char C Escape code Name
0000000 000 0 00 NUL ␀ ^@ \0 Null character
Il n'y a pas de différence, mais le plus idiomatique est '\0'
.
Le déposer comme char c = 0;
pourrait signifier que vous avez l’intention de l’utiliser sous forme de nombre (par exemple, un compteur). '\0'
est sans ambiguïté.
'\0'
est juste un caractère ASCII. Identique à 'A'
, ou '0'
ou '\n'
Si vous écrivez char c = '\0
', c'est pareil quechar c = 0;
Si vous écrivez char c = 'A'
, c'est pareil que char c = 65
C'est juste une représentation de caractère et c'est une bonne pratique de l'écrire, quand vous voulez vraiment dire l'octet NULL de chaîne. Puisque char
est en C un octet (type intégral), cela n’a aucune signification particulière.
Le choix préféré est celui qui permet aux lecteurs de votre code de comprendre comment vous utilisez votre variable - sous forme de nombre ou de caractère. La meilleure pratique consiste à utiliser 0 lorsque vous entendez votre variable sous forme de nombre et à utiliser "\ 0" lorsque vous indiquez que votre variable est un caractère.