簡體   English   中英

為什么cout不打印外部“ C”變量?

[英]Why does cout not print extern “C” variable?

考慮以下代碼:

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

為什么會這樣呢?

它根本不只打印a 您所看到的是cout字符類型數據打印為字符而不是數字。 您的b是某些不可打印的字符,因此cout可以將其打印為空白。

您通過將其轉換為int找到了解決方案。

編輯:我很確定您的printf只是偶然地工作,因為您告訴它要期待一個unsigned int並給它一個字符(不同的字節數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM