web-dev-qa-db-ja.com

文字列の終了-char c = 0 vs char c = '\ 0'

文字列を終了するとき、「null」(ASCII 0)バイトはchar c=0であるため、論理的にchar c='\0'0と同等であるように見えますが、通常は代わりに'\0'を実行する傾向があります。これは純粋に好みではありませんか、それともより良い「練習」である必要がありますか?

望ましい選択肢は何ですか?


編集:K&Rsays:「文字定数'\0'は、値ゼロの文字、ヌル文字を表します。式の文字の性質を強調するために、'\0'の代わりに0がよく記述されますが、数値は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

違いはありませんが、より慣用的なのは'\0'

char c = 0;は、数値として使用することを意味する場合があります(カウンターなど)。 '\0'は明確です。

39
Nobilis

'\0'は単なるASCII文字です。'A'、または'0'または'\n'と同じです。
char c = '\0 'と書くと、char c = 0;と同じです
char c = 'A'と書くと、char c = 65と同じです

これは単なる文字表現であり、文字列のNULLバイトを本当に意味する場合は、それを記述することをお勧めします。 charはCの1バイト(整数型)であるため、特別な意味はありません。

18
Michal Bukovy

望ましい選択は、コードを読んでいる人に、変数をどのように使用するかを数字または文字として理解できるようにすることです。ベストプラクティスは、変数を数値として使用する場合は0を使用し、変数が文字である場合は「\ 0」を使用することです。

3
Pupkov-Zadnij