我试图了解代码的内容:
cout << '5' - '3';
我打印的是int吗?当我使用减法运算符时,为什么会自动将它们更改为整数?
答案 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