这段代码怎么没有报错?
int backgroundASCIICode = ' ';
此代码摘自一个名为 ASMR spin cube 的 Youtube 视频。
这绝对是第一次。从来没想过我会看到一个 int 类型的空字符串
' '
不是空字符串。它是两个撇号之间的空格。这是一个字符常量。它的值是空格字符的字符代码。在 C 语言中,它具有 int
类型。在 C++ 中,它具有 char
类型。
从变量名称中,我们可以推测是 ASCII,在这种情况下,空格字符的代码是 32。
单引号不是字符串,它们是字符文字。而且它不是空的,而是一个空间。
C/C++ 将
char
类型视为整数类型,因此您可以将 char
隐式转换为 int
。 C 甚至立即为字符文字提供 int
类型。
其结果很可能是十六进制 0x20 或十进制 32——空格字符的 ASCII 代码。
因此:
" "
-> 长度为 1 的字符串文字,包含空格字符,类型为 const char[]
。' '
-> 表示空格字符的字符文字,类型为 char
(C++) 或 int
(C)。
还有:
"abc"
-> 长度为 3 的字符串文字'abc'
-> 错误