减去数字的字符

subtracting characters of numbers

我正在尝试了解代码的运行情况:

cout << '5' - '3';

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

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

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

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


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

您在这里所做的是从 ASCII 字符 '3' 的值中减去 ASCII 字符 '5' 的值。所以 '5' - '3' 等价于 53 - 51 结果是 2.

字符的ASCII值为here

C 编程中的每个字符都被赋予一个 integer value 来表示它。该整数值称为该字符的 ASCII 值。例如:'a' 的 ASCII 值是 97。例如:如果您尝试将字符 'a' 存储在 char 类型变量中,则存储该字符的 ASCII 值是 97。

'5'和'3'之间的减法是指在它们的 ASCII 值之间进行减法。因此,将 cout << '5' - '3'; 替换为它们的 ASCII 值 cout << 53 - 51;。因为 C 编程中的每个字符都被赋予一个 integer value 来表示它。

两个整数之间有一个减法运算,所以打印出一个整数2