繁体   English   中英

printf 整数显示比 C++ cout 多

[英]printf integer displays more than C++ cout

我是一名 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: %d\n",data_to_send.data[2]);
std::cout << "Debug: " << std::dec << data_to_send.data[2];

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

根据格式说明符%d要求, printf将其视为整数50

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

我的猜测是data_to_send.datachar* ,所以data_to_send.data[2]是值为50 char 。 当您调用printf您指定将参数视为整数( %d ),因此它打印50 在 C++ 中, cout使用函数重载来调用具体函数到具体类型的参数,在这种情况下operator<< for char '2' ASCII 值是50 ,这就是打印出2原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM