空终止字符串:使用“\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++ 中,它们有不同的类型:char
和 int
。所以边缘转到 '[=13=]'
因为没有涉及类型转换。
不同的风格指南相互推崇。 '[=13=]'
为清楚起见。 0
因为没有杂乱。
正确答案:根据您所在组的编码使用样式standards/guidelines。如果您的小组没有这样的指南,请制定一个。最好使用一种而不是不同的风格。
如果我需要以 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++ 中,它们有不同的类型:char
和 int
。所以边缘转到 '[=13=]'
因为没有涉及类型转换。
不同的风格指南相互推崇。 '[=13=]'
为清楚起见。 0
因为没有杂乱。
正确答案:根据您所在组的编码使用样式standards/guidelines。如果您的小组没有这样的指南,请制定一个。最好使用一种而不是不同的风格。