我是新来的C / C ++,所以我有一对夫妇约一个基本类型的问题:
一)你能向我解释之间的区别int64_t
和long
( long int
)? 在我的理解,都是64个整数。 是否有任何理由要选择一个比其他?
B)我想查找的定义int64_t
在网络上,但没有成功。 有权威人士我需要这样的问题需要咨询?
c)对于代码中使用int64_t
编译,我目前包括<iostream>
,这没有多大意义的我。 是否有其他还有包括提供的声明int64_t
?
一)你能向我解释之间的区别int64_t
和long
( long int
)? 在我的理解,都是64个整数。 是否有任何理由要选择一个比其他?
前者是一个符号整型恰好与64位。 后者是一个带符号的整数类型与至少 32位。
B)我想查找的定义int64_t
在网络上,但没有成功。 有权威人士我需要这样的问题需要咨询?
http://cppreference.com这里涵盖了这一点: http://en.cppreference.com/w/cpp/types/integer 。 的权威来源,然而,这是C ++标准 (该特定位可在§18.4整数类型[cstdint]中找到)。
c)对于代码中使用int64_t
编译,我包括<iostream>
,这没有多大意义的我。 是否有其他还有包括提供的声明int64_t
?
据中声明<cstdint>
或<cinttypes>
下命名空间std
),或在<stdint.h>
或<inttypes.h>
(在全局命名空间)。
int64_t
由C99标准保证是在实现它的平台64 精确地宽位,有一个没有这样的保证long
为至少32位,因此可以更。
§7.18.1.3精确宽度的整数类型1 typedef名intN_t表示具有宽度N,没有填充比特,和一个二的补码表示的符号整数类型。 因此,表示中int8_t恰好与8位的宽度的符号的整数类型。
int64_t
是typedef
,你可以发现,在<stdint.h>
使用C
的int64_t应该是64个位宽的任何平台(因此而得名)上,而长可以具有在不同平台上不同的长度。 特别是,的sizeof(长)通常是4,即。 32位。