或者这取决于16位,32位等编译器?
此外,这些数据类型是否在C,C#或Java中有效?
答案 0 :(得分:5)
C ++标准要求int8_t
,int16_t
,int32_t
和int64_t
完全符合指定的宽度,未签名的对应项前缀为u
,< em>仅当目标平台上存在此类型时。是的,这些是C中有效的标准类型.Java和C#不包含相同名称的这种整数数据类型。
相关类型有intN_least_t
和intN_fast_t
,其中&#34;最少&#34;类型至少具有指定的位数。
答案 1 :(得分:4)
intN_t
是N
位长的精确宽度整数类型。根据C11草案N1570 7.2.1.1,它们被定义为:
typedef name intN_t指定一个有符号整数类型,其宽度为N,没有填充位和二进制补码表示。因此,int8_t表示这样的有符号整数类型,其宽度恰好为8位。
然而
这些类型是可选的。但是,如果实现提供宽度为8,16,32或64位的整数类型,没有填充位,并且(对于带有二进制补码表示的有符号类型),它应定义相应的typedef名称。
这些类型在C和C ++中有效。正常short
,int
和long long
这些原因除了最小范围外没有任何保证
在C#中,这将等同于Int16,Int32和Int64类型。在jave中,我们可以使用byte
,short
,int
和long
,因为这些都是guaranteed to be of an exact width.
答案 2 :(得分:0)
它们具有基于std C ++的相同范围。更多详情here
并且它们在C上有效,但在Java和C#上不确定