【C++】初学者的疑惑--关于('A'+1)==?

来源:百度知道 编辑:UC知道 时间:2024/05/30 23:58:50
(1)
cout<<'A'+1;//此处为什么会输出ASCII的值66,而不是'B'?

(2)
reinterpret_cast<int>('A'+1)//"ERROR"我不是将char转换成了一个完全不同的类型int,为什么会编译时报错呢?
(书上写reinterpret_cast可以将一种类型强制转换为另一种完全不同的类型。比如将指针转换为整数……)

(3)
vector<char>test;
test.push_back('A'+1);
cout<<test[0];//此处未使用强制转换(char)('A'+1)可是却可以正常输出‘B’这是怎么回事?

(最后一个问题)('A'+1)==? 它到底是cout输出的66,还是vector中的'B',还是其他的什么东东?

PS:字符串自变量的氤氲一直笼罩在我头上,使我很烦恼-_-II
如果您能解决我这个相当大的烦恼,我将尽可能的为您加分
谢谢。

<1>
'char' + int
'char'整型提升为int型.
<2>
reinterpret_cast只能用来转换指针.
一般的标准转换用static_cast
<3>
'A'+1==66,然后传入参数自动转换成char型.push_back(char)