unsigned long long
有多少字节?
和unsigned long long int
一样吗?
执行摘要:64 位或更大。
unsigned long long
与 unsigned long long int
相同。它的大小取决于平台,但由 C 标准 (ISO C99) 保证至少为 64 位。 C89 中没有 long long
,但显然 MSVC 也支持它,因此它非常可移植。
在当前的 C++ 标准(2003 年发布)中,没有
long long
,尽管许多编译器支持它作为扩展。即将推出的 C++0x 标准将支持它,并且其大小将与 C 中的相同,因此至少为 64 位。
您可以使用表达式
sizeof(unsigned long long)
获取准确的大小,以字节为单位(典型平台上为 8 字节)。如果您想要正好 64 位,请使用 uint64_t
,它是在标头 <stdint.h>
中定义的,以及一堆相关类型(在 C99、C++11 和一些当前的 C++ 编译器中可用)。
与 C 一样,C++ 的优点在于这些东西的大小是实现定义的,因此如果不指定所使用的编译器,就没有正确的答案。这两个是一样的吗?是的。对于任何接受两者的编译器来说,“long long”是“long long int”的同义词。
它必须至少为 64 位。 除此之外,它是由实现定义的。
严格来说,在 C++0x 标准出现之前,
unsigned long long
并不是 C++ 中的标准。 unsigned long long
是类型 unsigned long long int
的“简单类型说明符”(因此它们是同义词)。
long long
类型集也在 C99 中,甚至在标准化之前也是 C++ 编译器的常见扩展。
使用运算符
sizeof
,它将给出以字节表示的类型的大小。一个字节是八位。请参阅以下程序:
#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;
}