2013-06-06 10 views
37

Quando si termina una stringa, mi sembra logicamente che char c=0 sia equivalente a char c='\0', poiché il byte "null" (ASCII 0) è 0, ma di solito le persone tendono a fare '\0' invece. Questo è puramente fuori dalle preferenze o dovrebbe essere una "pratica" migliore?Terminazione stringa - char c = 0 vs char c = ' 0'

Qual è la scelta preferita?


EDIT:K & Rdice: "Il personaggio costante '\0' rappresenta il carattere con valore zero, il carattere nullo '\0' è spesso scritto anziché 0 sottolineare il carattere carattere. di alcune espressioni, ma il valore numerico è solo 0.

+1

Hey Joe DF! Leggendo ora K & R e ha avuto la stessa domanda. Cerca su google "\ 0 in c string" e il secondo link è rivolto alla tua domanda. Mi ha aiutato;) – vasili111

+1

@ vasili111 Sono contento che ti abbia aiutato. :) –

risposta

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 

Non c'è differenza, ma quella più idiomatica è '\0'.

Forse metterlo giù come char c = 0; potrebbe significare che si intende utilizzarlo come numero (ad esempio un contatore), anche se personalmente non mi sono imbattuto in codice del genere. '\0' non è ambiguo.

+0

Lo standard C garantisce ASCII? –

+0

Sì, questo è quello che ha dato anche la mia lettura del C99. Grazie per quella domanda, non l'avevo trovato prima. –

16

'\0' è solo un carattere ASCII. Lo stesso che 'A', oppure '0' o '\n'
Se si scrive char c = '\0', è lo stesso che char c = 0;
Se si scrive char c = 'A', è lo stesso che char c = 65

E' solo una rappresentazione di carattere ed è una buona pratica per scrivilo, quando intendi veramente il byte di stringa NULL. Poiché char è in C un byte (tipo integrale), non ha alcun significato speciale.

+0

o addirittura 0x41 :) –

+2

o 0b1000001 o 0101, che non è importante nella mia risposta. È tutto il numero. –

+0

hahaha divertente: D –

3

La scelta preferita è quella che consente alle persone che leggono il codice di comprendere come si utilizza la variabile, come numero o come carattere. La migliore pratica è usare 0 quando intendi la variabile come numero e usare '\ 0' quando vuoi dire che la tua variabile è un personaggio.