2013-06-06 28 views
37

Po zakończeniu łańcucha wydaje mi się, że logicznie char c=0 jest równoważne char c='\0', ponieważ bajt "null" (ASCII 0) to 0, ale zwykle ludzie zwykle robią zamiast tego '\0'. Czy jest to czysto nieopłacalne, czy powinno być lepszą "praktyką"?Zakończenie łańcucha - znak c = 0 vs znak c = ' 0'

Jaki jest preferowany wybór?


EDIT:K & Rmówi: „Postać stała '\0' przedstawia postać z wartością zero, znak null '\0' jest często napisane zamiast 0 podkreślić charakter znaków. pewnego wyrażenia, ale wartość liczbowa to tylko 0.

+1

Hej Joe DF! Czytam teraz K & R i miałem to samo pytanie. Googled "\ 0 in c string", a drugi link do twojego pytania. Pomogło mi;) – vasili111

+1

@ vasili111 Cieszę się, że ci pomogło. :) –

Odpowiedz

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 

Nie ma różnicy, ale bardziej idiomatyczny jest '\0'.

Być może odłożenie go na char c = 0; może oznaczać, że zamierzasz używać go jako liczby (np. Licznika), chociaż osobiście nie natknąłem się na taki kod. '\0' jest jednoznaczny.

+0

Czy standard C gwarantuje ASCII? –

+0

Tak, to jest także to, co dała mi moja lektura C99. Dzięki za to pytanie, nie znalazłem tego wcześniej. –

16

'\0' to tylko znak ASCII. Tak samo jak 'A' lub '0' lub '\n'
Jeśli piszesz char c = '\0”, to tak samo jak char c = 0;
Jeśli piszesz char c = 'A', jest taka sama jak char c = 65

to tylko reprezentacja znaków i jest to dobra praktyka, aby zapisz go, kiedy naprawdę masz na myśli bajt NULL stringa. Ponieważ char jest w C jeden bajt (typ całkowy), nie ma żadnego specjalnego znaczenia.

+0

lub nawet 0x41 :) –

+2

lub 0b1000001, lub 0101, to nie jest ważne w mojej odpowiedzi. To wszystko liczba. –

+0

hahaha funny: D –

3

Preferowany wybór umożliwia osobom czytającym Twój kod zrozumienie, w jaki sposób wykorzystujesz zmienną - jako liczbę lub jako znak. Najlepszą praktyką jest użycie 0, gdy masz na myśli zmienną jako liczbę i użycie "\ 0", kiedy masz na myśli zmienną, która jest postacią.