为什么我必须在code
函数内的以下示例中对指针进行类型转换才能返回类型char
的值,因为我已经将它声明为函数中char的常量指针定义?
特别是cout << (*p + 1)
结果是整数格式,而当将其更改为cout << (char) (*p + 1)
时,结果将以char格式显示,因为我对其进行了类型转换。
<<
运算符是否有一些关于要显示的类型的默认参数?
#include <iostream>
using namespace std;
void code(const char* p);
int main()
{
code("This is a test");
return 0;
}
void code(const char* p)
{
while(*p)
{
cout << (*p + 1);
p++;
}
}
答案 0 :(得分:5)
*p
为const char
,添加1
(integer literal)会将其提升为int
(请参阅this link中的数字促销)。您必须将其强制转换回char
:
cout << static_cast<char>(*p + 1); // abandon C-style cast
是的,std::ostream::operator<<
被重载以区别对待不同的类型。
答案 1 :(得分:0)
更改
cout << (*p+1);
到
cout << *(p+1);
这适用于@LogicStuff所述的原因。