uint和unsigned int之间的区别?

|
uint
unsigned int
有什么区别? 我正在寻找该站点,但所有问题都涉及C#或C ++。 我想要一个有关C语言的答案。 如果相关,请注意我在Linux下使用GCC。     
已邀请:
uint
不是标准类型-
unsigned int
是。     
一些系统可能将uint定义为typedef。 typedef unsigned int uint; 对于这些系统,它们是相同的。但是uint不是标准类型,因此每个系统都可能不支持它,因此它不是可移植的。     
我在延伸Erik,Teoman Soygul和taskinoor的回答 uint不是标准。 因此,不建议您使用这样的简写形式:
typedef unsigned int uint;
如果您要查找平台特定性(例如,您需要指定int占用的位数),包括stdint.h:
#include <stdint.h>
将公开以下标准整数类别: 具有一定精确宽度的整数类型 至少具有指定宽度的整数类型 具有至少某些指定宽度的最快整数类型 足够宽的整数类型,可以容纳指向对象的指针 具有最大宽度的整数类型 例如,   精确宽度整数类型      typedef名称int N _t指定带宽度的带符号整数类型   N,无填充位,并用二进制补码表示。从而,   int8_t表示宽度为8位的带符号整数类型。      typedef名称uint N _t指定一个无符号整数类型,其中   宽度N。因此,uint24_t表示宽度为无符号的整数类型   正好是24位 定义
int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
    
unsigned int
是内置的(标准)类型,因此,如果您希望项目是跨平台的,请始终使用
unsigned int
,因为它被保证可被所有编译器支持(因此为标准)。     
这里的所有答案都没有提到
uint
的真正原因。 显然,它是ѭ1的ѭ10,但这并不能解释其用处。 真正的问题是   为什么有人要键入基本类型的缩写?   版? 节省打字? 不,他们是出于必要而这样做的。 考虑一下C语言;没有模板的语言。 您将如何消灭自己的可以容纳任何类型的向量? 您可以使用void指针执行某些操作, 但是如果您对模板进行更精确的仿真,则可以使用宏。 因此,您将定义模板矢量:
#define define_vector(type) \\
  typedef struct vector_##type { \\
    impl \\
  };
声明您的类型:
define_vector(int)
define_vector(float)
define_vector(unsigned int)
并在生成之后,意识到类型应该是单个标记:
typedef struct vector_int { impl };
typedef struct vector_float { impl };
typedef struct vector_unsigned int { impl };
    

要回复问题请先登录注册