我正在尝试了解代码中发生了什么:
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/