请考虑以下代码:
extern "C" {
#include <lib.h>
}
#include <iostream>
int main() {
unsigned char a='a';
unsigned char b=some_struct_in_libh->unsignedchar;
cout << a << " " << b << endl; //Prints only a
printf("%u\n",b); //Prints b
cout << static_cast<int>(b) << endl; //Also prints b
return 0;
}
为什么它会像这样?
答案 0 :(得分:6)
根本不打印a
。您所看到的是cout
将字符类型数据打印为字符而不是数字。您的b
是某些不可打印的字符,因此cout
有助于将其打印为空格。
您通过将其转换为int来找到解决方案。
编辑:我很确定你的printf只是偶然工作,因为你告诉它期望一个unsigned int并给它一个字符(不同的字节数)。