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

Joe*_* DF 45 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.

Nob*_*lis 39

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
Run Code Online (Sandbox Code Playgroud)

没有区别,但更惯用的是'\0'.

把它放下来char c = 0;可能意味着你打算用它作为一个数字(例如一个计数器).'\0'毫不含糊.


Mic*_*ovy 18

'\0'只是一个ASCII字符.和'A',或者'0'或者'\n'
如果你写char c = '\0',它和char c = 0;
你写char c = 'A'的一样,它和它一样char c = 65

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

  • 字符集不必与 ASCII 兼容,因此“A”不必与 65 相同。(例如 EBCDIC 与 ASCII 不兼容。)我不知道任何使用非零值的字符集但是对于 NUL 字符。 (3认同)
  • 或0b1000001,或0101,这在我的回答中并不重要.这都是数字. (2认同)

Pup*_*nij 6

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