2012-12-10 35 views
6

tôi đã viết đoạn mã sau:1 byte dữ liệu kiểu số nguyên

#include <iostream> 
#include <iomanip> 
#include <stdint.h> 

using namespace std; 

int main() 
{ 
    uint8_t c; 

    cin >> hex >> c; 
    cout << dec << c; 

    return 0; 
} 

Nhưng khi tôi vào c — hex cho 12 — đầu ra cũng là c. Tôi đã mong đợi 12. Sau đó tôi đã học được rằng:

uint8_t thường là typedef cho unsigned char. Vì vậy, nó thực sự đọc c như ASCII 0x63.

Có số nguyên 1 byte hoạt động như một số nguyên trong khi thực hiện I/O chứ không phải là char?

+1

Không không có, đó là một sự xấu hổ –

Trả lời

4

Không phải là tôi biết.

Bạn có thể làm I/O sử dụng loại số nguyên rộng hơn và sử dụng kiểm tra phạm vi và truyền khi thích hợp.

1

Tôi sợ rằng tôi không biết một cách một trong hai, nhưng đọc một số hex vào một kiểu số nguyên có thể được thực hiện như sau:

#include <iostream> 
using namespace std; 

int main() { 
    short c; 
    cin >> std::hex >> c; 
    cout << c << endl; 
    return 0; 
} 
Các vấn đề liên quan