C言語のヌル文字を教えてください

まず、前説として、文字の0つまりCの記法での'0'と、数値の0つまりCの記法での0は全く別物です。
printf("%d,%d\n", '0', 0);48,0と出力。
'0'というのは「文字の0」の文字コード数値を表します。具体的な数値は環境次第ですが身の回りの多くの環境ででは48です。

本題。

様々な書籍ではヌル文字は\0と書かれています。独習ではヌル文字は0と書かれていて\がついていません。

Cの記法で、引用符に囲まれていない\0というのはないので書くと文法エラーです。
引用符に囲まれた'\0'は、「文字コードの値が0の文字」です。
printf("%d,%d,%d\n", '0', 0, '\0');48,0,0と出力。

つまり、'\0'は数値の0と同じで、文字の'0'とは異なります。

数値を書くところで、0と書いても'\0'と書いてもどちらもint型の全く同じ値です。(上述のように\0はエラー)
文字としての「ヌル文字」のことであると言いたい時は'\0'と書くのが普通ですが、0と書いてもCのコンパイラからすると、全く同じ扱いです。

まとめ:
0・・・・int型で値0
'0'・・・・int型で値48
\0・・・・文法エラー
'\0'・・・・int型で値0。0と全く同じだが「ヌル文字」という意味を込める際に使う

コメントを投稿

0 コメント