似乎将char初始化为0和' \ 0'在C中生成二进制代码。如果是这样,为什么我们有' \ 0'在C中而不仅仅是0来结束字符串?
答案 0 :(得分:6)
我唯一能想到的就是可读性,因为'\0'
对于那些在这里读取你想要字符的代码的人来说是一个更好的指示。
除此之外,我必须承认它没有任何区别。事实上,对于有经验的C程序员来说,可读性甚至都不是问题。
答案 1 :(得分:4)
是的,初始化单个角色没有区别。但\0
的目的是允许您将空字符嵌入到字符串文字中:
"foo\0bar"
就像任何其他转义序列一样。对于单个角色,它与0相同的事实只是一个快乐(设计)的巧合。您正在使用转义序列命名八进制值。
答案 2 :(得分:4)
您可以在字符串文字中使用各种转义序列:
"\n \t \x0a \123"
// symbolic, hex, octal
所有这些也可用于字符文字:
'\n', '\t', '\x0a', '\123'
那么为什么要特别排除'\0'
(一个特定的八进制值)呢?为什么它在字符文字中不起作用?
虽然0
和'\0'
之间没有语义差异,但它们可用于表达程序员的意图:0
可以是任何整数零,但'\0'
是通常只用于NUL字节。