C/C++ 中的单引号、双引号和大小 ('a')
Single, double quotes and sizeof('a') in C/C++
我正在研究 C 或 C++ 中的单引号与双引号问题。我无法完全理解给出的解释,所以我写了一个程序:
#include <stdio.h>
int main()
{
char ch = 'a';
printf("sizeof(ch) :%dn", sizeof(ch));
printf("sizeof('a') :%dn", sizeof('a'));
printf("sizeof("a") :%dn", sizeof("a"));
printf("sizeof(char) :%dn", sizeof(char));
printf("sizeof(int) :%dn", sizeof(int));
return 0;
}
我使用 gcc 和 g++ 编译了它们,这些是我的输出:
海湾合作委员会:
sizeof(ch) : 1
sizeof('a') : 4
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
G++:
sizeof(ch) : 1
sizeof('a') : 1
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
g++ 输出对我来说很有意义,我对此没有任何怀疑。在 gcc 中,有什么需要sizeof('a')
才能与sizeof(char)
不同?这背后有什么实际原因,还是只是历史原因?
同样在 C 中,如果 char
和 'a'
的大小不同,这是否意味着当我们写 char ch = 'a';
,我们正在进行隐式类型转换?
在 C 中,字符常量(如 'a'
)的类型为 int
,在 C++ 中为 char
。
关于最后一个问题,是的,
char ch = 'a';
导致int
隐式转换为char
。
因为没有字符,只有 intgers 链接 int 一个字符
就像一个是62我猜
如果你尝试printf("%c",62);你会看到一个字符
相关文章:
- 单引号在C++数学编程中是什么意思?
- wcout不会打印正确的单引号
- C++ 中数组(单引号和双引号)的可视常量字符* 与字符
- 使用带有 std::cout 的单引号打印字符串实际上打印了数字
- 匹配外部单引号之间的字符串
- 如何使用C++中不是文字的变量在数字中显示单引号和两个引号?假设 6'2" 英尺
- 正则表达式使用提升令牌迭代器在单引号和括号之间提取值
- 如何在QT中正确逃脱单引号和双引号
- 为什么'char'值必须有单引号而不是双引号?
- C++单引号语法
- 修改正则表达式以包含反斜杠和单引号(以便反斜杠表现为转义字符)
- iSpunct()未检测到单引号字符
- 以C++显示时带有单引号和双引号的不同答案
- 使用 getline() 在单引号中读取
- 在 C# 中将单引号字符串到 uint
- C/C++ 中的单引号、双引号和大小 ('a')
- PQexecParams 使用单引号失败
- 单引号(撇号)要打印到屏幕C++的字母
- C++中的转义序列用单引号括起来,而不是用双引号括起来
- 从字符串c++中删除单引号字符