长对齐多少字节?

Dus*_*ant 72 c++

多少字节是unsigned long long?它是一样的unsigned long long int吗?

Fre*_*Foo 74

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

unsigned long long是一样的unsigned long long int.它的大小取决于平台,但C标准(ISO C99)保证至少为64位.long long在C89 中没有,但显然甚至MSVC都支持它,所以它非常便携.

在当前的C++标准(2003年发布)中,没有long long,尽管许多编译器都支持它作为扩展.即将推出的C++ 0x标准将支持它,它的大小将与C中的相同,因此至少为64位.

您可以使用表达式获取字节(典型平台上为8位)的确切大小sizeof(unsigned long long).如果你想要64位,请使用uint64_t,这在头文件中定义,<stdint.h>同时还有一堆相关类型(在C99,C++ 11和一些当前的C++编译器中可用).

  • @lars:不,不是.每个平台上的char总是一个字节.标准没有指定一个字节中有多少位,但这是另一回事.一个实现可以使用64位字节,这将导致`sizeof(long long)== 1`并且符合要求. (4认同)
  • @lars:`sizeof(char)`[保证只返回一个](http://stackoverflow.com/questions/4329777/is-long-guaranteed-to-be-at-least-32-bits).它返回操作数在字节数中的大小,而不是"char单元"的数量.因此,它在每个平台上都不是"在大多数平台上"的字节. (2认同)
  • @John:这取决于 *byte* 的定义。如果您将“char”和“byte”等同起来,那么您是对的。如果将“char”和*octet*等同起来,那么情况就会有所不同。 (2认同)

Ern*_*ill 16

像C一样,C++的优点在于这些东西的大小是实现定义的,所以没有指定你正在使用的编译器就没有正确的答案.这两个是一样的吗?是."long long"是"long long int"的同义词,对于任何将同时接受这两者的编译器.

  • 美女还是诅咒? (47认同)
  • -1:有一个正确的答案 - "至少64位" (3认同)
  • @Andy:比尔克林顿?那是你吗?;) (3认同)
  • 这绝对不是“ C ++的美丽”,这是完全的痛苦:p (3认同)
  • 虽然你所说的在技术上是正确的,但标准要求长的长*至少*64位长,并且我不知道任何定义64位以外的任何大小的实现.当128位编译器问世时,这可能会发生变化,但对于当前的编译器来说,它不是一个假设64位的延伸. (2认同)
  • +1,反击downvote.答案取决于'是'的含义. (2认同)

Mic*_*urr 14

它必须至少为64位.除此之外,它的实现已定义.

严格来说,unsigned long long在C++ 0x标准之前,C++中不是标准的. unsigned long long是类型的'简单类型说明符' unsigned long long int(因此它们是同义词).

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