C ++-int64_的定义

我是C / C ++的新手,所以我对基本类型有几个问题:

a)您能向我解释int64_t<iostream>int64_t)之间的区别吗?以我的理解,两者都是64位整数。 有什么理由选择一个吗?

b)我试图在网上查找int64_t的定义,但没有获得很大的成功。 我需要咨询有关此类问题的权威信息吗?

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

clstaudt asked 2019-10-08T09:50:33Z
4个解决方案
80 votes

a)您能向我解释<cstdint><cinttypes>std)之间的区别吗? 以我的理解,两者都是64位整数。 有什么理由选择一个吗?

前者是正好有64位的带符号整数类型。 后者是至少32位的带符号整数类型。

b)我试图在网上查找<cstdint>的定义,但没有获得很大的成功。 我需要咨询有关此类问题的权威信息吗?

[http://cppreference.com]在此处介绍:[http://en.cppreference.com/w/cpp/types/integer。]但是,权威的来源是C ++标准(可以找到此特定位) 在§18.4整数类型[cstdint]中)。

c)对于使用<cstdint>进行编译的代码,我包括<cinttypes>,这对我来说没有太大意义。 是否还有其他包含std声明的声明?

它在<cstdint><cinttypes>(在名称空间std中),或<stdint.h><inttypes.h>(在全局名称空间中)中声明。

R. Martinho Fernandes answered 2019-10-08T09:51:20Z
7 votes

C99标准保证2560045384164967967424在实现它的平台上恰好是64位宽,对于2560045384164967967425至少32位没有这样的保证,因此可以更多。

§7.18.1.3精确宽度整数类型1 typedef名称intN_t   指定宽度为N,没有填充位的有符号整数类型,并且   二的补码表示。 因此,int8_t表示一个有符号   整数类型,宽度恰好为8位。

iabdalkader answered 2019-10-08T09:51:54Z
4 votes

2560045946168148948992是typedef您可以在C中的<stdint.h>中找到

Omkant answered 2019-10-08T09:52:21Z
1 votes

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

Kylotan answered 2019-10-08T09:52:48Z
translate from https://stackoverflow.com:/questions/13604137/definition-of-int64-t