unsigned long long
有多少字节?
它与unsigned long long int
相同吗?
答案 0 :(得分:73)
执行摘要:它是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 ++编译器中可用)。
答案 1 :(得分:16)
与C一样,C ++的优点在于这些东西的大小是实现定义的,所以没有指定你正在使用的编译器就没有正确的答案。这两个是一样的吗?是。 “long long”是“long long int”的同义词,对于任何接受这两者的编译器都是。
答案 2 :(得分:14)
必须至少为64位。除了它的实现定义。
严格地说,{C}标准之前,unsigned long long
在C ++中不是标准的。 unsigned long long
是类型unsigned long long int
的'简单类型说明符'(因此它们是同义词)。
long long
类型集也在C99中,甚至在标准化之前就是C ++编译器的常见扩展。
答案 3 :(得分:1)
使用运算符sizeof
,它将为您提供以字节表示的类型的大小。一个字节是8位。请参阅以下程序:
#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;
}