2013-06-06 33 views
37

文字列を終了するとき、論理的にchar c=0char c='\0'と等しくなりますが、 "null"(ASCII 0)バイトは0です人々は代わりに'\0'をする傾向があります。これは単に純粋に嗜好から外れるのか、それともより良い「練習」でなければならないのでしょうか?文字列終了 - char c = 0 vs char c = ' 0'

どのような選択肢がありますか?


EDIT:K & Rは言う:「定数'\0'文字はゼロの値を持つ文字、ヌル文字を表し'\0'は、多くの場合、文字の本質を強調するために0の代わりに書かれています。数式の数値は、0です。

+1

ヘイジョーDF!今K&Rを読んで、同じ質問がありました。グーグル "Cの文字列\ 0"と2番目のリンクはあなたの質問です。それは私を助けた;) – 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

はい、それは私の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

haha​​ha funny:D –

3

あなたのコードを読んでいる人に、変数を数字や文字としてどのように使用するのかを理解できるようにすることをお勧めします。 ベストプラクティスは、変数を数値として意味するときは0を、変数が文字の場合は '\ 0'を使用することです。

関連する問題