web-dev-qa-db-fra.com

Terminaison de chaîne - char c = 0 vs char c = '\ 0'

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.

45
Joe DF

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é.

39
Nobilis

'\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.

18
Michal Bukovy

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.

3
Pupkov-Zadnij