我来自高级语言,PHP js和东西。所以这对我来说很奇怪。
我正在使用本地或online解释器,但我总是得到这个结果。
我认为这个结果是因为'2'
是50
,而98
是'b'
,但我不确定。另外,我真的不明白转换是如何工作的。
代码在这里:
#include <iostream>
#include <string>
int main()
{
std::cout << '1' + 1 << '\n';
std::cout << '1' + '1' << '\n';
}
答案 0 :(得分:6)
Type char
是整数类型。每个字符映射到一个整数值。该值取决于所使用的编码,在您的情况下可能是ASCII。因此,字符'1'
可能具有49
的整数值,因此'1' + '1'
expression等同于49 + 49
,并产生98
。将1
的整数值添加到49
会产生50
。这与将1
的整数值添加到(由'1'
表示的值相同。
简而言之,值是值,无论是通过character literals还是integer literals表示。
答案 1 :(得分:5)
'1'
是char
常量,其特定值由系统上使用的 encoding 确定。该编码可能是ASCII,但可能不是。当用作+
的参数时,它会被提升为int
。因此decltype('1')
是char
,但decltype('1' + '1')
是int
。
在您的系统上,很明显'1'
的值为49.这就是'1' + '1'
为98的原因。因此'1' + 1
为50。
请注意,在C中,'1'
是int
类型。可以说,这比C ++的方式更容易混淆。