Những người khác ở đây sẽ đăng liên kết đến data_sizes và các biện pháp, v.v.
Tôi sẽ cho bạn biết cách tự tìm ra.
Viết một ứng dụng nhỏ sẽ thực hiện các thao tác sau.
unsigned int ui;
std::cout << sizeof(ui));
này sẽ (tùy thuộc vào trình biên dịch và archicture) in 2, 4 hoặc 8, nói dài 2 byte, dài 4 byte, vv
Cho phép giả định đó là 4.
Bây giờ bạn muốn giá trị tối đa 4 byte có thể lưu trữ, giá trị tối đa cho một byte là (trong hex) 0xFF. Giá trị tối đa của bốn byte là 0x theo sau là 8 f (một cặp f cho mỗi byte, 0x cho trình biên dịch biết chuỗi sau là một số hex). Bây giờ, hãy thay đổi chương trình của bạn để gán giá trị đó và in kết quả
unsigned int ui = 0xFFFFFFFF;
std::cout << ui;
Thats giá trị lớn nhất mà một unsigned int có thể giữ, được hiển thị trong biểu diễn cơ sở 10.
Bây giờ, hãy thực hiện điều đó cho thời gian dài, quần short và bất kỳ giá trị INTEGER nào khác mà bạn tò mò.
NB: Cách tiếp cận này sẽ không hoạt động đối với các số dấu phẩy động (tức là gấp đôi hoặc nổi).
Hope this helps
Nguồn
2009-11-30 11:22:43
Tiêu đề ban đầu cũng nói "C/C++". – caf
lý do tại sao phạm vi tích cực dài dài == dải tiêu cực –
@mohamedabdallah: Xem đoạn cuối cùng của câu trả lời: phạm vi tiêu chuẩn C là cách để cho phép bổ sung hoặc biểu diễn độ lớn của người đó. – caf