空终止字符串:使用'\ 0'还是只有0?
如果我需要空字符串终止,我应该宁愿使用\0
还是简单的0
也足够了?空终止字符串:使用' 0'还是只有0?
是否有使用
char a[5];
a[0] = 0;
和
char a[5];
a[0] = '\0';
或者是\0
只是最好说清楚,我是空的结束位置之间的任何差别,但对于编译器它是相同?
使用'\ 0'或只是0?
价值没有差异。
在C中,类型没有区别:都是int
。
在C++中它们有不同的类型:char
和int
。所以边缘去'\0'
因为没有涉及类型转换。
不同风格指南推动一个在另一个。为清晰起见,请参阅'\0'
。 0
缺乏杂乱。
正确答案:根据您的团队编码标准/指导原则使用样式。如果你的团队没有这样的指导方针,那就制作一个。更好地使用一个比有不同的风格。
'\0'
与0
完全一样,尽管类型。 '\0'
只是表示为char
文字。虽然类型char
可以从普通文字int
初始化。
所以实际上不可能说出哪些更好,只要记住在代码中一致地使用它。
详细信息:在C中,“\ 0”更适合称为_character constant_。只有文字C指定的是_string literal_和_compound literal_。 – chux
注意:在C中,像''\ 0''这样的字符常量的类型是'int',而不是'char'。 –
这是一回事。看看ascii表。
从我的角度来看,使用'\ 0'会更好,因为您明确指出字符串的结尾。
这有助于当你读你的代码(如使用空指针而不是0)。
_“看看ascii表。”_ EBCDIC字符表呢?这仍然是真的吗? –
两者都将产生相同的机器代码,如0
将被转换为字符值0
,和'\0'
是书写字符值0
的另一种方式。后者显然是一个角色,所以它会表明你并不意味着写'0'
,但除此之外,它最终是完全一样的东西。
注意:在C中,像''\ 0''这样的字符常量的类型是'int',而不是'char'。 –
对于C++,只需使用'std :: string'并忘记C字符串。 – crashmstr