9 回答 9
This answer is useful
34
#include
int main()
{
std::cout << sizeof 'n' << std::endl; // 1
std::cout << sizeof "n" << std::endl; // 2
std::cout << sizeof '\n' << std::endl; // 1
std::cout << sizeof "\n" << std::endl; // 2
std::cout << sizeof "\\n" << std::endl; // 3
std::cout << sizeof "" << std::endl; // 1
}
单引号表示字符,双引号表示带有不可见 NUL 终止符的 C 样式字符串。
\n(换行符)只是一个字符,\\(反斜杠)也是如此。\\n只是一个反斜杠,后跟 n。
于 2012-02-21T20:13:58.140 回答
This answer is useful
10
'n': 不是字符串,是文字 char,一个字节,字母 n 的字符代码。
"n": 字符串,两个字节,一个用于 n,一个用于每个字符串末尾的空字符。
"\n":两个字节作为 \n 代表“新行”,它占用一个字节,加上一个字节用于空字符。
'\n':与第一个相同,文字字符,不是字符串,一个字节。
"\\n": 三个字节.. 一个用于 , 一个用于换行符和空字符
"": 一个字节,只是空字符。
于 2012-02-21T20:22:45.483 回答
This answer is useful
6
根据char定义, A 占用一个字节。
文字使用'的是 char 文字;使用的文字"是字符串文字。
字符串文字是隐式以空值结尾的,因此它将比文字中可观察到的字符数多占用一个字节。
\是转义字符并且\n是换行符。
把这些放在一起,你应该能够弄清楚。
于 2012-02-21T20:15:06.910 回答
This answer is useful
5
以下将在内存中占用 x 个连续字符:
'n' - 1 char (type char)
"n" - 2 chars (above plus zero character) (type const char[2])
'\n' - 1 char
"\n" - 2 chars
"\\n" - 3 chars ('\', 'n', and zero)
"" - 1 char
编辑:格式固定
edit2:我写了一些非常愚蠢的东西,感谢 Mooing Duck 指出这一点。
于 2012-02-21T20:17:32.160 回答
This answer is useful
2
字符串占用的字节数等于字符串中的字符数加 1(终止符)乘以每个字符的字节数。每个字符的字节数可以变化。char常规类型为 1 个字节。
你所有的例子都是一个字符长,除了倒数第二个是两个,最后一个是零。(有些是类型char,只定义一个字符。)
于 2012-02-21T20:14:15.120 回答
This answer is useful
1
'n' - 0x6e
"n" - 0x6e00
'\n' - 0x0a
"\n" - 0x0a00
"\\n" - 0x5c6e00
"" - 0x00
于 2012-02-21T20:16:22.337 回答
This answer is useful
1
您似乎指的是字符串常量。并将它们与字符常量区分开来。
Achar在所有架构上都是一个字节。字符常量使用单引号分隔符'。
字符串是一个连续的字符序列,带有一个尾随 NUL 字符,用于标识字符串的结尾。字符串使用双引号字符 '"'。
此外,您还介绍了使用黑斜线表示特殊字符的 C 字符串常量表达式语法。 \n是字符串常量中的一个字符。
因此对于示例'n', "n", '\n', "\n":
'n'一个字符
"n"是一个字符的字符串,但它需要存储两个字符(一个用于字母n,一个用于 NUL
'\n'是一个字符,换行符(基于 ASCII 的系统上的 ctrl-J)
"\n"是一个字符加上一个 NUL。
我让其他人根据这些来解谜。
于 2012-02-21T20:19:30.037 回答
This answer is useful
1
'n'-> 一char。Achar始终为 1 个字节。这不是一个字符串。
"n"-> 一个字符串文字,包含一个n和一个终止 NULL char。所以2个字节。
'\n'-> One char, Achar总是 1 个字节。这不是一个字符串。
"\n"-> 一个字符串文字,包含一个\n和一个终止 NULL char。所以2个字节。
"\\n"-> 一个字符串文字,包含一个\、一个 '\n' 和一个终止 NULL char。所以3个字节。
""-> 一个字符串文字,包含一个终止 NULL char。所以1个字节。
于 2012-02-21T20:19:41.603 回答
This answer is useful
0
可能晚了10年。但是如果你只使用“Hello”,它只是一个字符数组,所以这将占用的字节数是这个字符数组的字符数(在这种情况下为 5)+ 1(一个 NULL 字符),这将是6 在这种情况下。因此,您可以采用以下规则:对于 c_strings(char 数组):字符数 + 1
您还可以使用“include”和在 std::string = "Your text here"; 之后访问 c++ 字符串。
此 c++ 字符串始终具有固定大小(在我的机器上为 28 字节)。
于 2021-06-22T16:56:35.237 回答