簡體   English   中英

使用 std::cout 打印分配給十六進制值的字符時出現奇怪的 output

[英]Strange output when printing char assigned to hex value using std::cout

我正在嘗試打印這些數據類型。 但是我得到一個非常奇怪的 output 而不是我所期望的。

#include <iostream>

using namespace std;

int main(void)
{
    char data1 = 0x11;
    int data2 = 0XFFFFEEEE;
    char data3 = 0x22;
    short data4 = 0xABCD;   
    cout << data1 << endl;
    cout << data2 << endl;
    cout << data3 << endl;
    cout << data4 << endl;
}

您很可能希望將 data1 和 data3 打印為某種數字。 然而,數據類型是字符,這就是為什么 C++(或 C)會將它們解釋為字符,將 0x11 映射到相應的 ASCII 字符(控制字符),類似於 0x22 除了一些其他字符(參見 ASCII 表)。 如果你想將這些字符打印為數字,你需要在像這樣打印它們之前將它們轉換為int (適用於 C 和 C++):

cout << (int)data1 << endl;

或更多 C++ 樣式將是:

cout << static_cast<int>(data1) << endl;

如果要以十六進制顯示數字,則需要使用hex IO 操縱器更改默認的 output 基數。 之后所有 output 都以十六進制完成。 如果要切換回十進制 output,請使用dec 有關詳細信息,請參閱cppreference.com

cout << hex << static_cast<int>(data1) << endl;

暫無
暫無

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

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