まず、前説として、文字の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 コメント