2016-02-06 16 views
7

Trong c + +, cụ thể là tệp tiêu đề cstdint, có các loại cho số nguyên 8 bit, hóa ra là kiểu dữ liệu char với typedef. Bất cứ ai có thể đề xuất một loại số nguyên thực tế 8-bit?Có loại dữ liệu số nguyên thực 8 bit trong C++

+0

http://en.cppreference.com/w/cpp/types/integer –

+6

Như tôi đã hiểu, 'int8_t' được đảm bảo là số nguyên 8 bit, nếu nó được xác định. Thực tế là thực hiện của bạn typedef của nó như 'char' (hoặc có thể' ký char') ngụ ý rằng thực hiện của bạn 'char' là trong thực tế 8 bit. Lưu ý rằng 'char' và các họ hàng của nó luôn là các kiểu số nguyên trong C và C++; điều này khác với một số ngôn ngữ khác không xử lý các ký tự như các loại số học. –

+1

Trong các triển khai phổ biến hơn, 'char' là 8 bit. Nếu nó không phải là 8 bit, sẽ không có 'std :: int8_t'. – chris

Trả lời

11

Có, bạn đã đúng. int8_tuint8_ttypedef đến char trên nền tảng có 1 byte là 8 bit. Trên các nền tảng mà nó không phải là, định nghĩa thích hợp sẽ được đưa ra.

câu trả lời Dưới đây là dựa trên giả định rằng char là 8 bits

char giữ 1 byte, có thể signed hoặc unsigned dựa trên thực hiện.

Vì vậy int8_tsigned charuint8_tunsigned char, nhưng điều này sẽ được an toàn để sử dụng int8_t/uint8_t như số nguyên 8-bit thực tế mà không cần dựa quá nhiều vào việc thực hiện.

Để biết quan điểm của người thực hiện, typedef ngón tay trong đó char có 8 bit hợp lý.

Đã thấy tất cả điều này, Sử dụng int8_t hoặc uint8_t làm số nguyên 8 bit thực sự là an toàn.

+1

Lưu ý rằng 'int8_t' có thể không phải là typedef đối với' char' trên các nền tảng trong đó 'char' nhỏ hơn 8 bit. – vsoftco

+0

Niềm tin của tôi là 'char' là 1 byte. Không phải nó? Có thể tôi cần phải xác nhận lại bản thân mình :) bây giờ – dlmeetei

+0

'char' là 1 byte thực sự, nhưng 1 byte không phải lúc nào cũng là 8 bit, xem ví dụ: [this] (http://stackoverflow.com/questions/2098149/what-platforms-have-something-other-than-8-bit-char). Mặc dù niềm tin của tôi là 'int8_t' không được định nghĩa cho các nền tảng trong đó một byte không phải là 8 bit. – vsoftco

Các vấn đề liên quan