定义int64_t
我是C / C ++新手,所以我有几个关于基本types的问题:
a)你可以向我解释int64_t
和long
( long int
)之间的区别吗? 在我的理解,都是64位整数。 有什么理由select一个吗?
b)我试图在网上查找int64_t
的定义,没有太多的成功。 有没有一个权威的来源我需要咨询这样的问题?
c)对于使用int64_t
进行编译的代码,我目前包含<iostream>
,这对我来说没有多大意义。 还有其他包含提供int64_t
的声明吗?
a)你可以向我解释
int64_t
和long
(long int
)之间的区别吗? 在我的理解,都是64位整数。 有什么理由select一个吗?
前者是一个有64位的有符号整型。 后者是一个至less有 32位的有符号整数types。
b)我试图在网上查找
int64_t
的定义,没有太多的成功。 有没有一个权威的来源我需要咨询这样的问题?
http://cppreference.com涵盖这里:; http : //en.cppreference.com/w/cpp/types/整数 。 然而,权威来源是C ++标准 (这个特殊位可以在§18.4Integer types [cstdint]中find)。
c)对于使用
int64_t
进行编译的代码,我包含<iostream>
,这对我没有多大意义。 还有其他包含提供int64_t
的声明吗?
它在<cstdint>
或<cinttypes>
(在名称空间std
)或<stdint.h>
或<inttypes.h>
(在全局名称空间中)中声明。
int64_t
由C99标准保证,在实现它的平台上正好是 64位,没有这样的long
保证,至less是32位,所以它可以更多。
§7.18.1.3精确宽度的整数types1 typedef名称intN_t指定宽度为N,没有填充位和二进制补码表示的有符号整数types。 因此,int8_t表示宽度恰好为8位的有符号整数types。
int64_t
是typedef
你可以在C中的<stdint.h>
中find它
一个int64_t应该在任何平台(因此名称)上为64位宽,而在不同的平台上long可以有不同的长度。 sizeof(long)通常是4,即。 32位。