unsigned long long 有多少字节?

问题描述 投票:0回答:4

unsigned long long
有多少字节? 和
unsigned long long int
一样吗?

c++
4个回答
98
投票

执行摘要: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++ 编译器中可用)。


19
投票

与 C 一样,C++ 的优点在于这些东西的大小是实现定义的,因此如果不指定所使用的编译器,就没有正确的答案。这两个是一样的吗?是的。对于任何接受两者的编译器来说,“long long”是“long long int”的同义词。


16
投票

它必须至少为 64 位。 除此之外,它是由实现定义的。

严格来说,在 C++0x 标准出现之前,

unsigned long long
并不是 C++ 中的标准。
unsigned long long
是类型
unsigned long long int
的“简单类型说明符”(因此它们是同义词)。

long long
类型集也在 C99 中,甚至在标准化之前也是 C++ 编译器的常见扩展。


2
投票

使用运算符

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.