C++ 用c+打印十六进制代码+;,但只是;g";印刷品

C++ 用c+打印十六进制代码+;,但只是;g";印刷品,c++,C++,我有一个关于以下代码的问题。当我运行它时,它总是打印“g”而不是十六进制代码。为什么?如何输出十六进制代码?小提琴: #包括 使用名称空间std; 作废准备结束(){ char命令[50]; sprintf(命令,“%04XT1000A”,“076”); 无符号字符校验和=0x02; char*p=命令; 而(*p){ 校验和^=*p++; } 校验和^=0x03; std::cout将校验和转换为int std::cout << std::hex << static_

我有一个关于以下代码的问题。当我运行它时,它总是打印“g”而不是十六进制代码。为什么?如何输出十六进制代码?小提琴:

#包括
使用名称空间std;
作废准备结束(){
char命令[50];
sprintf(命令,“%04XT1000A”,“076”);
无符号字符校验和=0x02;
char*p=命令;
而(*p){
校验和^=*p++;
}
校验和^=0x03;
std::cout将校验和转换为int

 std::cout << std::hex << static_cast<int>(checksum) << std::endl;
std::cout将校验和转换为int

 std::cout << std::hex << static_cast<int>(checksum) << std::endl;
std::cout
未定义的行为,请打开编译器警告

sprintf(Command,"%04XT1000A", 0x76);
您还需要强制转换
校验和
,以避免使用
运算符的
无符号字符
版本 未定义的行为,请打开编译器警告

sprintf(Command,"%04XT1000A", 0x76);

你还需要使用<代码>校验和<代码>以避免使用<代码>未签名的char <代码>版本>代码>操作员,但是请不要使用C样式的Cask-使用CalrdRooPr.Co Road RutoLPH改变了。但是请不要使用C样式的Cask-使用C++Casp。@康拉德鲁道夫改变了。为什么不调试你的代码?为什么不调试你的代码?谢谢,ho。wever输出将是“14”。是否有可能未输入类似0x002C的内容?
#包括
并添加
您不打算删除其余内容。
std::cout谢谢,但是输出将是“14”。是否可能没有int-put类似于0x002C的内容?
#包括
并添加
您不打算删除其余内容。
std::cout
std::cout << std::hex << static_cast<int>(checksum) << std::endl;