2013-06-06 2 views
37

문자열을 종료 할 때 "null"(ASCII 0) 바이트가 0이기 때문에 논리적으로 char c=0char c='\0'과 같습니다. 사람들은 대신 '\0'을하는 경향이 있습니다. 이것은 순수하게 선호도를 벗어 났습니까? 아니면 더 나은 "실습"이어야합니까?문자열 종료 - 문자 C = 0 대 문자 C = ' 0'

무엇을 선호합니까? 편집


:K & R 말한다 : "문자 상수 '\0' 값 0 인 문자, 널 문자를 나타냅니다 '\0' 종종 문자 성격을 강조하는 대신 0의 기록됩니다. 일부 표현식의 숫자는 단지 0입니다.

+1

안녕하세요 조 DF! K & R을 읽고 똑같은 질문을했습니다. 봤는데 "C 문자열에서 \ 0"두 번째 링크는 귀하의 질문입니다. 그것은 나를 도왔다;) – vasili111

+1

@ vasili111 그것이 당신을 도왔다 니 기쁩니다. :) –

답변

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 

차이점은 없지만 더 관용적 인 표현은 '\0'입니다.

아마도 이것을 char c = 0;으로 지정하면 개인적으로 그런 코드를 접한 적이 없지만 번호 (예 : 카운터)로 사용할 수 있습니다. '\0'은 명확합니다.

+0

C 표준은 ASCII를 보장합니까? –

+0

@CiroSantilli 필자는 C99 표준을보고 있으며, ASCII로 trigraphs와 언어 구현을 구현하는 것과 관련하여 ASCII를 언급하는 몇 가지 각주가있다. 이것은 구현 정의 된 것입니다 (IBM의 EBCDIC와 같은 문자 집합을 염두에 두십시오). 하지만 ASCII 문자 집합에 의존하지 않는 최신 C 구현을 찾으려는 노력이 필요하다고 생각합니다. 이것 [여기] (http://stackoverflow.com/questions/15251049/does-the-underlying-character-set-depend-only-on-the-c-implementation)과 관련된 몇 가지 유용한 정보가 있습니다. – Nobilis

+0

그렇습니다. C99에 대한 제 독재 책에도 나와 있습니다. 그 질문을 주셔서 감사합니다, 그것을 전에 발견하지 못했습니다. –

16

'\0'은 ASCII 문자입니다. 'A', 또는 '0' 또는 '\n'
당신이 'char c = '\0를 작성하는 경우와 같은, 그것은 당신이 char c = 'A'을 작성하는 경우, 그것은 char c = 65

그것은 단지 문자 표현의와 동일합니다 char c = 0;
와 같은 그리고 그것은에 좋은 습관이다 당신이 정말로 문자열의 NULL 바이트를 의미 할 때 쓰십시오. char은 1 바이트 (정수형)의 C이므로 특별한 의미가 없습니다.

+0

이거나 심지어 0x41 인 곳입니다. –

+2

또는 0b1000001 또는 0101로 제 대답에는 중요하지 않습니다. 모든 번호입니다. –

+0

hahaha funny : D –

3

선호하는 선택은 코드를 읽는 사람들에게 변수 또는 숫자를 어떻게 사용하는지 이해할 수있는 능력을 제공하는 것입니다. 변수를 숫자로 사용하고 변수가 문자 인 경우 '\ 0'을 사용하려면 0을 사용하는 것이 가장 좋습니다.