字符串终止 - char c = 0 vs char c ='\ 0'

时间:2013-06-06 07:16:46

标签: c string c-strings null-terminated ansi-c

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

什么是首选?


编辑: K& R :“字符常量'\0'代表字符值为零时,空字符。'\0'通常是代替0来强调某些表达式的字符性质,但数值只是0

3 个答案:

答案 0 :(得分:37)

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

答案 1 :(得分:18)

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

相同

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

答案 2 :(得分:3)

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