长对齐多少字节?

时间:2011-04-29 19:10:27

标签: c++

unsigned long long有多少字节? 它与unsigned long long int相同吗?

4 个答案:

答案 0 :(得分:73)

执行摘要:它是64位或更大。

unsigned long longunsigned 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;
}