在c++中,特别是cstdint头文件中,有一些8位整数的类型是带有typedef的char数据类型。有人能建议一个真正的8位整数类型吗?
zbwhf8kr1#
是的,你是对的。int8_t和uint8_t在1字节为8位的平台上是typedef到char。在不是8位的平台上,将给出适当的定义。下面的答案是基于假设char是8 bitschar保存1个字节,根据实现可能是signed或unsigned。所以int8_t是signed char,uint8_t是unsigned char,但是使用int8_t/uint8_t作为实际的8位整数是安全的,而不太依赖于实现。从实现者的Angular 来看,typedef fing(其中char为8位)是有意义的。看到这一切,使用int8_t或uint8_t作为真实的8位整数是安全的。
int8_t
uint8_t
typedef
char
8 bits
signed
unsigned
signed char
unsigned char
ddhy6vgd2#
有__int8,__int16,__int32,__int64默认数据类型(这也适用于C编程语言),不使用<cstdint>头,也没有__int128用于Microsoft特定的(很多答案是在here,甚至内部函数__shiftleft128,__shiftright128使用两个__int64例如)。int8_t是char也适用于无符号类型,例如,uint8_t是unsigned char。
__int8
__int16
__int32
__int64
<cstdint>
__int128
__shiftleft128
__shiftright128
2条答案
按热度按时间zbwhf8kr1#
是的,你是对的。
int8_t
和uint8_t
在1字节为8位的平台上是typedef
到char
。在不是8位的平台上,将给出适当的定义。下面的答案是基于假设char是
8 bits
char
保存1个字节,根据实现可能是signed
或unsigned
。所以
int8_t
是signed char
,uint8_t
是unsigned char
,但是使用int8_t/uint8_t作为实际的8位整数是安全的,而不太依赖于实现。从实现者的Angular 来看,
typedef
fing(其中char为8位)是有意义的。看到这一切,使用
int8_t
或uint8_t
作为真实的8位整数是安全的。ddhy6vgd2#
有
__int8
,__int16
,__int32
,__int64
默认数据类型(这也适用于C编程语言),不使用<cstdint>
头,也没有__int128
用于Microsoft特定的(很多答案是在here,甚至内部函数__shiftleft128
,__shiftright128
使用两个__int64
例如)。int8_t
是char
也适用于无符号类型,例如,uint8_t
是unsigned char
。