定义int64_t

我是C / C ++新手,所以我有几个关于基本types的问题:

a)你可以向我解释int64_tlonglong int )之间的区别吗? 在我的理解,都是64位整数。 有什么理由select一个吗?

b)我试图在网上查找int64_t的定义,没有太多的成功。 有没有一个权威的来源我需要咨询这样的问题?

c)对于使用int64_t进行编译的代码,我目前包含<iostream> ,这对我来说没有多大意义。 还有其他包含提供int64_t的声明吗?

a)你可以向我解释int64_tlonglong 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_ttypedef你可以在C中的<stdint.h>中find它

一个int64_t应该在任何平台(因此名称)上为64位宽,而在不同的平台上long可以有不同的长度。 sizeof(long)通常是4,即。 32位。