减去数字的字符

时间:2015-09-26 01:06:01

标签: c++ string char int

我试图了解代码的内容:

cout << '5' - '3';

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

3 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:1)

您在这里做的是从ASCII字符'5'的值中减去ASCII字符'3'的值。因此'5' - '3'相当于53 - 51,结果为2。

答案 2 :(得分:0)

字符的ASCII值为here

C编程中的每个字符都有integer value来表示它。该整数值称为该字符的ASCII值。例如:&#39; a&#39;的ASCII值是97.例如:如果你试图存储角色&#39; a&#39;在char类型变量中,存储该字符的ASCII值,即97。

在&#39; 5&#39;之间减去和&#39; 3&#39;意味着减去它们的ASCII值。因此,将cout << '5' - '3';替换为其ASCII值cout << 53 - 51;。因为C编程中的每个字符都有integer value来表示它。

两个整数之间有一个减法运算,因此,它打印一个整数2