【问题标题】:If char and int differ only in the number of bits, why are they different when printing?如果 char 和 int 仅在位数上有所不同,为什么它们在打印时会有所不同?
【发布时间】: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&lt;&lt;的不同重载
  • 因为这些不同的类型有不同的实现,它们是如何表示为文本的。如果您想将char 值视为数字,可以按照here 所述进行操作。
  • 不同类型的含义和处理方式可能会有所不同,而不仅仅是字节数的差异。
  • 如果您需要特定位宽,建议您使用u*_t类型,例如uint8_tuint32_t;有符号整数也有位宽类型。
  • “公认的答案说差异在于比特的大小” vs. “因为它只是比特的差异”——你添加了一个误导性的词。不同之处在于大小,但不仅仅是大小上的差异。语义上也有区别(char 代表一个字符,而int 代表一个整数)。同样,标题中的“仅”一词是一个添加的误导性词。

标签: c++ char


【解决方案1】:

char 可以被视为包含一个数值,当char 被这样处理时,它确实与int 的大小不同——它更小,通常是一个字节。

然而,intchar 仍然是不同的类型,由于 C++ 是一种静态类型语言,因此类型很重要。变量的类型会影响程序的行为,而不仅仅是变量的值。在您的问题中,这两个变量的打印方式不同,因为运算符 &lt;&lt; 已重载;它对待 intchar 的方式不同。

【讨论】:

    猜你喜欢
    • 2012-12-24
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多