簡體   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