Là bao nhiêu byte unsigned long long? Nó có giống với unsigned long long int?
int32_t, uint64_tvv C ++ sẽ nhận được chúng với các tiêu chuẩn sắp tới. Chúng ở trong tiêu đề <stdint.h>.
Là bao nhiêu byte unsigned long long? Nó có giống với unsigned long long int?
int32_t, uint64_tvv C ++ sẽ nhận được chúng với các tiêu chuẩn sắp tới. Chúng ở trong tiêu đề <stdint.h>.
Câu trả lời:
Tóm tắt: nó là 64 bit hoặc lớn hơn.
unsigned long longgiống như unsigned long long int. Kích thước của nó phụ thuộc vào nền tảng, nhưng được đảm bảo theo tiêu chuẩn C (ISO C99) là ít nhất 64 bit. Không có long longtrong C89, nhưng dường như ngay cả MSVC cũng hỗ trợ nó, vì vậy nó khá di động.
Trong tiêu chuẩn C ++ hiện tại (ban hành năm 2003), không có long long, mặc dù nhiều trình biên dịch hỗ trợ nó như một phần mở rộng. Chuẩn C ++ 0x sắp tới sẽ hỗ trợ nó và kích thước của nó sẽ giống như trong C, vì vậy ít nhất là 64 bit.
Bạn có thể nhận được kích thước chính xác, tính bằng byte (8 bit trên các nền tảng điển hình) với biểu thức sizeof(unsigned long long). Nếu bạn muốn chính xác 64 bit, hãy sử dụng uint64_t, được định nghĩa trong tiêu đề <stdint.h>cùng với một loạt các kiểu liên quan (có sẵn trong C99, C ++ 11 và một số trình biên dịch C ++ hiện tại).
sizeof(char) được đảm bảo trả lại chính xác một . Nó trả về độ lớn của toán hạng theo số byte, không phải số "đơn vị ký tự". Do đó, không phải byte của nó "trên hầu hết các nền tảng" byte của nó trên mọi nền tảng.
charvà byte, bạn đúng. Nếu bạn cân bằng charvà octet , thì nó thay đổi.
sizeof(long long) == 1và điều đó sẽ tuân theo.
Vẻ đẹp của C ++, giống như C, là kích thước của những thứ này được xác định bởi việc triển khai, vì vậy không có câu trả lời chính xác nếu bạn không chỉ định trình biên dịch mà bạn đang sử dụng. Hai cái đó có giống nhau không? Đúng. "long long" là một từ đồng nghĩa với "long long int", đối với bất kỳ trình biên dịch nào chấp nhận cả hai.
Nó phải có ít nhất 64 bit. Khác với việc thực hiện nó được xác định.
Nói chính xác, unsigned long longkhông phải là tiêu chuẩn trong C ++ cho đến khi tiêu chuẩn C ++ 0x. unsigned long longlà 'đơn vị định dạng đơn giản' cho loại unsigned long long int(vì vậy chúng là từ đồng nghĩa).
Tập long longhợp các kiểu cũng nằm trong C99 và là một phần mở rộng phổ biến cho các trình biên dịch C ++ ngay cả trước khi được chuẩn hóa.
Sử dụng toán tử sizeof, nó sẽ cung cấp cho bạn kích thước của một kiểu được biểu thị bằng byte. Một byte là tám bit. Xem chương trình sau:
#include <iostream>
int main(int,char**)
{
std::cout << "unsigned long long " << sizeof(unsigned long long) << "\n";
std::cout << "unsigned long long int " << sizeof(unsigned long long int) << "\n";
return 0;
}