【问题标题】:I do not understand char-to-int conversion我不明白 char 到 int 的转换
【发布时间】:2016-03-29 07:05:24
【问题描述】:

编程:使用 C++ 的原则和实践的第 72–73 页:

我们看到我们不能直接添加字符或将 double 与 int 进行比较。然而,C++ 提供了一种间接的方式来实现这两者。需要时,将 char 转换为 int,将 int 转换为 double。例如:

char c = 'x'; 
int i1 = c; 
int i2 = 'x'; 

这里 i1 和 i2 的值都是 120,这是最流行的 8 位字符集 ASCII 中字符“x”的整数值。这是获取字符数字表示的一种简单而安全的方法。我们称这种 char 到 int 的转换是安全的,因为不会丢失任何信息;也就是说,我们可以将生成的 int 复制回 char 并获取原始值:

char c2 = i1; 
  cout << c << ' << i1 << ' << c2 << '\n';

这将打印 x 120 x

我不明白 char 到 int 的转换。我不明白作者说的那些东西。你能帮帮我吗?

【问题讨论】:

  • A char 实际上只不过是一个小范围的整数(0 到 255 或 -128 到 127,取决于 char 是否无符号),而 C++ 有很多 @ 987654321@,例如integral promotions
  • @Superex 什么,具体点你不明白吗?
  • a char 是一个 byte 的表示,它是四位,给出 0000 - 1111 之间的二进制值,0-2555 无符号,或 -128 到 127 有符号,如 Joachim 所述.在编程中 charr 将是文本表示,因此如果您将值分配给 int,您将获得 char 的 int 值。
  • @JoSSte 请检查范围 0-255
  • @JoSSte 你的意思是 7 或 8 位

标签: c++


【解决方案1】:

作者说您可以安全地从 char 转换为 int 有两个原因。第一个是 char 是由其 ASCII 值表示的单个字符。

这是一张这样的表格的链接http://www.asciitable.com/

如示例所示,将 'x' 转换为 int 将得到 120,即小写 x 的十进制 ASCII 值。

这样做安全的第二个原因是,没有变量的数据被更改或覆盖,因为您正在为每次转换创建新变量。

总而言之,char 是一种将整数 ASCII 值表示为与给定表对应的字符的数据类型,这就是为什么您可以轻松地从 char 转换为 int 的原因,因为它们本质上都是整数。

【讨论】:

  • 除此之外,当流式传输到std::cout 时,用于打印给定变量的方法取决于其类型。 char 将打印与其关联的 ASCII 值 (120 -> x),而 int 将显示其数值。
  • 谢谢,克里斯和库皮亚科斯!你已经回答了我的问题。
  • 注意:其他编码也可以,ASCII是最常见的
【解决方案2】:

我的 5 美分

其实第一个想到char到int转换的是Ada Lovelace (https://en.wikipedia.org/wiki/Ada_Lovelace)。

当她讨论Analytical Engine (https://en.wikipedia.org/wiki/Analytical_Engine) 时,她认为numbers 可以表达letterssymbols,这样Analytical Engine 理论上可以处理text 信息。

她甚至制作了一些适用于文本的示例“程序”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2012-10-20
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多