c++ - 减去数字的字符

标签 c++ string char int

我正在尝试了解代码中发生了什么:

cout << '5' - '3';

我正在打印的是一个整数吗?为什么当我使用减法运算符时它会自动将它们更改为整数?

最佳答案

在 C++ 中,字 rune 字仅表示整数值。

'5' 这样的基本文字表示一个 char 整数值,几乎所有现存的字符编码都是 48 + 5(因为字符 0 表示为值48,C++ 标准保证数字值是连续的,尽管字母没有这样的保证)。

然后,当您在算术表达式中使用它们时,甚至只是编写 +'5' 时,char 值将被提升整数。或者更不精确地,“通常的算术转换”开始,并转换为最接近的类型,即 int*higher 可以表示所有 char值。这种类型的变化会影响例如cout 将显示该值。


<支持> * 由于 char 根据定义是单个字节,并且 int 不能小于一个字节,而且实际上所有位int 的值表示位,充其量只能在最迂腐的​​形式中将 char 转换为比 int 更高的类型>。如果正式存在这种可能性,那么它就是纯语言律师的东西。

关于c++ - 减去数字的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32792600/

相关文章:

linux - Linux下判断设备是否为触摸屏设备

c - 为 char* 分配内存时出现奇怪的字符

c++ - CMake/MinGW 未知编译器,gcc.exe 损坏

c++ - 从 Code::Blocks 移植到 Visual Studio 2010

c - 任何在保护模式下将字符串输入屏幕的尝试都会导致重新启动

string - 树的 LCS 算法

c++ - 在基本 vector 的元素上调用派生方法(给出的示例)

c++ - 以在使用临时对象调用时生成编译器错误的方式重载方法

java - 如何计算字符串中的大写和小写字母?

python - 如何在 ctypes 中传回指针?