53

当终止一个字符串时,在我看来这在逻辑上char c=0等同于char c='\0',因为“null”(ASCII 0)字节是0,但通常人们倾向于这样做'\0'。这纯粹是出于偏好还是应该是更好的“做法”?

什么是首选?


编辑: K&R :“字符常量'\0'表示值为 0 的字符,即空字符。'\0'通常写成而不是0强调某些表达式的字符性质,但数值只是0.

4

3 回答 3

45

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'是明确的。

于 2013-06-06T07:21:58.577 回答
19

'\0'只是一个ASCII字符。'A'与, 或'0'相同如果'\n'
char c = '\0' 则与char c = 0;
如果写char c = 'A'相同 则与char c = 65

它只是一个字符表示,当您真正指的是字符串的 NULL 字节时,编写它是一个好习惯。由于char在 C 中是一个字节(整数类型),因此没有任何特殊含义。

于 2013-06-06T07:23:33.727 回答
6

首选的选择是可以让阅读您的代码的人能够理解您如何使用您的变量 - 作为数字或作为字符。最佳实践是当你的意思是你的变量是一个数字时使用 0,当你的变量是一个字符时使用 '\0'。

于 2013-06-06T07:46:35.653 回答