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++编译器中使用)。
char
和byte等同起来,那么你是正确的。如果你将char
和八位字节等同起来,那么情况就不同了。 - Fred Foosizeof(long long)== 1
,这也是符合规范的。 - John DiblingC++的优美之处,就像C一样,是这些东西的大小由实现定义,因此在不指定您使用的编译器的情况下没有正确答案。它们两个是一样的吗?是的。对于任何接受两者的编译器,“long long”都是“long long int”的同义词。
必须至少为64位,除此之外实现是定义的。
严格来说,在C++0x标准之前,unsigned long long
不是C++标准中的类型。 unsigned long long
是类型unsigned long long int
的“simple-type-specifier”(它们是同义词)。
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;
}
int32_t
、uint64_t
等类型。C++将在即将到来的标准中引入它们。它们在头文件<stdint.h>
中。 - Fred Foo