以空字符串作为值的 int 数据类型?

问题描述 投票:0回答:2

这段代码怎么没有报错?

int backgroundASCIICode = ' ';

此代码摘自一个名为 ASMR spin cube 的 Youtube 视频。

这绝对是第一次。从来没想过我会看到一个 int 类型的空字符串

c++ c
2个回答
1
投票

' '
不是空字符串。它是两个撇号之间的空格。这是一个字符常量。它的值是空格字符的字符代码。在 C 语言中,它具有
int
类型。在 C++ 中,它具有
char
类型。

从变量名称中,我们可以推测是 ASCII,在这种情况下,空格字符的代码是 32。


1
投票

单引号不是字符串,它们是字符文字。而且它不是空的,而是一个空间。

C/C++ 将

char
类型视为整数类型,因此您可以将
char
隐式转换为
int
。 C 甚至立即为字符文字提供
int
类型。

其结果很可能是十六进制 0x20 或十进制 32——空格字符的 ASCII 代码。

因此:

" "
-> 长度为 1 的字符串文字,包含空格字符,类型为
const char[]

' '
-> 表示空格字符的字符文字,类型为
char
(C++) 或
int
(C)。

还有:

"abc"
-> 长度为 3 的字符串文字
'abc'
-> 错误

© www.soinside.com 2019 - 2024. All rights reserved.