printf 整数显示超过 C++ cout

printf integer displays more than C++ cout

本文关键字:C++ cout 整数 显示 printf      更新时间:2023-10-16

我是一个C程序员,正在学习C++

似乎cout有点笨拙,我不明白为什么它会产生不同的输出。

//The printf below displays value 50
//The cout below display value 2
data_to_send.data[2] = atoi(data_str.c_str());    
printf("n DEBUG: %dn",data_to_send.data[2]);
std::cout << "Debug: " << std::dec << data_to_send.data[2];

您的data_to_send.data[2]字段是charunsigned char type(字节)。

printf将其视为整数50,按照格式说明符%d的要求。

cout将其视为 ASCII 代码50的字符'2',正如数据类型隐式请求的那样。

我的猜测是data_to_send.datachar*,所以data_to_send.data[2]是值50的字符。当你调用printf你指定将你的参数视为整数(%d),所以它打印50。In C++ cout 使用函数重载将具体函数调用到具体类型的参数,在本例中operator<<用于char'2'的ASCII值是50,这就是打印2的原因。