空终止字符串:使用“\0”还是仅使用 0?

Null-terminate string: Use '\0' or just 0?

如果我需要以 null 终止字符串,我应该使用 [=12=] 还是简单的 0 也足够?

使用有什么区别吗

char a[5];
a[0] = 0;

char a[5];
a[0] = '[=11=]';

或者 [=12=] 只是为了说明我在这里以 null 终止,但对于编译器来说是一样的吗?

尽管类型不同,

'[=10=]'0 完全相同。 '[=10=]' 只是 char 文字的一种表示。类型 char 可以从普通的 int 文字初始化。

所以实际上不可能说出哪个更好,只要记住在您的代码中始终如一地使用它。

这是一回事。看看 ascii table.

从我的角度来看,使用 '\0' 更好,因为您明确表示字符串的结尾。

这对您阅读代码很有帮助(例如使用 NULL 作为指针而不是 0)。

'[=10=]'是一个值为0的escape sequence for an octal literal,所以它们没有区别

旁注:如果您要处理字符串,则应使用 std::string.

两者会生成相同的机器码,因为0会被转换为字符值0,而'[=12=]'只是字符值[=10]的另一种写法=].后者显然是一个字符,所以它会表明你不是无意中要写 '0' 而不是,但除此之外,它最终是完全一样的。

Use '[=16=]' or just 0?

没有价值差异。
在 C 中,类型没有区别:都是 int.
在 C++ 中,它们有不同的类型:charint。所以边缘转到 '[=13=]' 因为没有涉及类型转换。

不同的风格指南相互推崇。 '[=13=]' 为清楚起见。 0 因为没有杂乱。

正确答案:根据您所在组的编码使用样式standards/guidelines。如果您的小组没有这样的指南,请制定一个。最好使用一种而不是不同的风格。