[英]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]
字段是char
或unsigned char type
(字節)。
根據格式說明符%d
要求, printf
將其視為整數50
。
cout
將其視為 ASCII 代碼50
的字符'2'
,這是數據類型隱式請求的。
我的猜測是data_to_send.data
是char*
,所以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.