2013-06-06 20 views
37

Beim Beenden einer Zeichenfolge scheint mir logisch char c=0 entspricht char c='\0', da das "Null" (ASCII 0) Byte ist 0, aber in der Regel Menschen neigen dazu, '\0' statt zu tun. Ist das nicht zu bevorzugen oder sollte es eine bessere "Praxis" sein?String Terminierung - char c = 0 vs char c = ' 0'

Was ist die bevorzugte Wahl?


EDIT:K & Rsagt: „Die Zeichen-Konstante '\0' das Zeichen mit dem Wert null, das Null-Zeichen '\0' oft statt 0 geschrieben wird, um den Charakter der Natur zu betonen. eines bestimmten Ausdrucks, aber der numerische Wert ist nur 0.

+1

Hallo Joe DF! Lesen Sie jetzt K & R und hatte die gleiche Frage. Gegoogelt "\ 0 in c string" und zweiter Link ist zu deiner Frage. Es hat mir geholfen;) – vasili111

+1

@ vasili111 Ich bin froh, dass es dir geholfen hat. :) –

Antwort

30

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 

Es gibt keinen Unterschied, aber der idiomatische ist '\0'.

Vielleicht könnte es als char c = 0; könnte bedeuten, dass Sie beabsichtigen, es als eine Nummer (z. B. ein Zähler) zu verwenden, obwohl ich persönlich nicht auf Code wie das gestoßen bin. '\0' ist eindeutig.

+0

Garantiert der C-Standard ASCII? –

+0

Ja, das ist es auch, was meine Lektüre von der C99 gab. Danke für diese Frage, hatte es vorher nicht gefunden. –

16

'\0' ist nur ein ASCII-Zeichen. Das gleiche wie 'A' oder '0' oder '\n'
Wenn Sie char c = '\0‘schreiben, dann ist es das gleiche wie char c = 0;
Wenn Sie char c = 'A' schreiben, es ist das gleiche wie char c = 65

Es ist nur eine Zeichendarstellung und es ist eine gute Praxis schreibe es, wenn du wirklich das NULL-Byte von string meinst. Da char in C ein Byte (Ganzzahl) ist, hat es keine besondere Bedeutung.

+0

oder sogar 0x41 :) –

+2

oder 0b1000001 oder 0101, das ist nicht wichtig in meiner Antwort. Es ist alles Nummer. –

+0

hahaha witzig: D –

3

Die bevorzugte Wahl ist diejenige, die Menschen, die Ihren Code lesen, die Möglichkeit gibt zu verstehen, wie Sie Ihre Variable verwenden - als Zahl oder als Zeichen. Am besten verwenden Sie 0, wenn Sie Ihre Variable als Zahl meinen, und verwenden Sie '\ 0', wenn Sie meinen, dass Ihre Variable ein Zeichen ist.