0

考虑以下代码:

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;
}

为什么它会这样?

4

1 回答 1

6

它根本不只是打印a。相反,您看到的是将cout字符类型数据打印为字符而不是数字。您b是一些不可打印的字符,因此cout有助于将其打印为空白。

您通过将其转换为 int 找到了解决方案。

编辑:我很确定你的 printf 只是偶然工作,因为你告诉它期待一个无符号的 int 并给它一个字符(不同的字节数)。

于 2013-07-12T15:38:05.660 回答