【发布时间】:2021-12-02 07:48:47
【问题描述】:
在Difference between char and int when declaring character 中,接受的答案说不同之处在于位大小。虽然,MicroVirus 回答说:
它在字符串中扮演一个字符的角色,当然在历史上。当这样看时,char 的值映射到指定的字符,例如通过 ASCII 编码,但它也可以与多字节编码一起使用(一个或多个字符一起映射到一个字符)。
基于这些答案:在下面的代码中,为什么输出不一样(因为它只是位的差异)?是什么机制让每种类型打印出不同的“字符”?
#include <iostream>
int main() {
int a = 65;
char b = 65;
std::cout << a << std::endl;
std::cout << b << std::endl;
//output :
//65
//A
}
【问题讨论】:
-
他们调用
operator<<的不同重载 -
因为这些不同的类型有不同的实现,它们是如何表示为文本的。如果您想将
char值视为数字,可以按照here 所述进行操作。 -
不同类型的含义和处理方式可能会有所不同,而不仅仅是字节数的差异。
-
如果您需要特定位宽,建议您使用
u*_t类型,例如uint8_t或uint32_t;有符号整数也有位宽类型。 -
“公认的答案说差异在于比特的大小” vs. “因为它只是比特的差异”——你添加了一个误导性的词。不同之处在于大小,但不仅仅是大小上的差异。语义上也有区别(
char代表一个字符,而int代表一个整数)。同样,标题中的“仅”一词是一个添加的误导性词。