如果我需要给一个字符串添加空字符结尾,我应该使用\0
还是简单的0
也足够了?
在使用中是否有任何区别?
char a[5];
a[0] = 0;
和
char a[5];
a[0] = '\0';
\0
是用来明确表示我在这里使用了空字符来终止字符串,但对于编译器而言它是否有区别?
如果我需要给一个字符串添加空字符结尾,我应该使用\0
还是简单的0
也足够了?
在使用中是否有任何区别?
char a[5];
a[0] = 0;
和
char a[5];
a[0] = '\0';
\0
是用来明确表示我在这里使用了空字符来终止字符串,但对于编译器而言它是否有区别?
'\0'
与0
完全相同,尽管类型不同。 '\0'
只是作为char
字面量的表示。虽然如此,char
类型可以从普通的int
字面量初始化。
因此,实际上无法确定哪种更好,只需记住在代码中始终保持一致即可。
'\0'
更恰当地被称为“字符常量”。C语言只指定了“字符串字面值”和“复合字面值”这两种文字。 - chux - Reinstate Monica'\0'
这样的字符常量是int
类型,而不是char
类型。 - Spikatrix两者将生成相同的机器码,因为0
将被转换为字符值0
,而'\0'
只是另一种写字符值0
的方式。后者显然是一个字符,所以它将表明你并没有意外地想要写'0'
,但除此之外,在最终结果上两者完全相同。
'\0'
这样的字符常量的类型是int
,而不是char
。 - Spikatrix这是同一件事。看ASCII表。
从我的角度来看,最好使用 '\0',因为你明确地表示字符串的结尾。
当你阅读代码时会有所帮助(就像使用NULL代替0一样)。
std::string
,不再使用 C 字符串。 - crashmstr