我是一名C语言程序员,对C++还不太熟悉。
我尝试使用cout输出以下内容,但输出结果很奇怪。欢迎给出任何关于此行为的评论。
#include<iostream>
using namespace std;
int main()
{
unsigned char x = 0xff;
cout << "Value of x " << hex<<x<<" hexadecimal"<<endl;
printf(" Value of x %x by printf", x);
}
输出:
Value of x ÿ hexadecimal
Value of x ff by printf
cout << x
想要输出十进制表示时才会生效。因为cout << (a char)
不会输出十进制表示(它会直接输出那个字节),所以hex
没有意义,也不起作用。因此,我们强制将其转换为int
类型,然后调用处理int
类型的<<
,从而输出十六进制表示。 - Thanatos