uint和unsigned int之间的区别?

时间:2011-04-15 14:13:13

标签: c gcc uint

uintunsigned int之间有什么区别吗? 我正在寻找网站,但所有问题都是指C#或C ++。 我想要一个关于C的答案。

请注意,我在Linux下使用GCC。

6 个答案:

答案 0 :(得分:67)

uint不是标准类型 - unsigned int是。

答案 1 :(得分:33)

某些系统可能将uint定义为typedef。

typedef unsigned int uint;

对于这些系统,它们是相同的。但uint不是标准类型,因此每个系统可能都不支持它,因此它不可移植。

答案 2 :(得分:16)

我正在通过Erik,Teoman Soygul和taskinoor扩展一些答案

uint 不是标准。

因此不鼓励使用你自己的速记:

<击> typedef unsigned int uint;

如果您寻找平台特异性(例如,您需要指定int占用的位数),包括stdint.h

#include <stdint.h>

将公开以下标准的整数类别:

  • 具有一定确切宽度的整数类型

  • 具有至少某些指定宽度的整数类型

  • 具有至少特定指定宽度的最快整数类型

  • 整数类型足以容纳指向对象的指针

  • 具有最大宽度的整数类型

例如,

  

精确宽度整数类型

     

typedef name int N _t指定带宽的带符号整数类型   N,没有填充位,以及二进制补码表示。从而,   int8_t表示有符号整数类型,宽度恰好为8位。

     

typedef名称uint N _t指定带有的无符号整数类型   因此,uint24_t表示具有宽度的无符号整数类型   正好是24位。

定义

int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t

答案 3 :(得分:7)

unsigned int是内置(标准)类型,因此如果您希望项目是跨平台的,请始终使用unsigned int,因为它保证所有编译器都支持(因此< em>标准)。

答案 4 :(得分:6)

这里的所有答案都未提及uint的真正原因 它显然是typedef的{​​{1}},但这并不能解释它的用处。

真正的问题是,

  

为什么有人想要将基本类型定义为缩写   版本

保存打字?
不,他们是出于必要而做到的。

考虑C语言;一种没有模板的语言 你会怎样去剔除你自己的可以容纳任何类型的向量?

你可以用虚拟指针做点什么,
但是更接近仿真模板会让你使用宏。

所以你要定义模板矢量:

unsigned int

声明您的类型:

#define define_vector(type) \
  typedef struct vector_##type { \
    impl \
  };

一代又一代,意识到这些类型应该是一个单一的标记:

define_vector(int)
define_vector(float)
define_vector(unsigned int)

答案 5 :(得分:1)

uintunsigned int 的可能且正确的缩写。可读性更好。但是:这不是 C 标准。您可以根据自己的职责定义和使用它(就像所有其他定义一样)。 但不幸的是,一些系统头文件也定义了 uint。我在当前编译器 (ARM) 的 sys/types.h 中找到了:

 # ifndef   _POSIX_SOURCE
  //....
 typedef    unsigned short  ushort;     /* System V compatibility */
 typedef    unsigned int    uint;       /* System V compatibility */
 typedef    unsigned long   ulong;      /* System V compatibility */
 # endif    /*!_POSIX_SOURCE */

对于熟悉的编写为 Unix System V 标准的源代码来说,这似乎是一种让步。关闭这种不受欢迎的行为(因为我想

#define uint unsigned int 

我自己先设置的

#define _POSIX_SOURCE

系统的标题不能定义不标准的东西。但不幸的是,这里定义了很多东西。

另见我的网页 https://www.vishia.org/emc/html/Base/int_pack_endian.html#truean-uint-problem-admissibleness-of-system-definitions 和。 https://www.vishia.org/emc