为什么C中有这么多的自定义数据类型?

时间:2018-09-24 10:12:06

标签: c variables custom-data-type

为什么有这么多的自定义数据类型,例如socklen_t,ssize_t,size_t和uint16_t?我不了解他们的真正需求。对我来说,它们只是一堆要学习的新变量名。

2 个答案:

答案 0 :(得分:3)

意图和可移植性。

例如,假设我有一个变量unsinged n。无符号整数可以表示很多东西,因此其意图尚不清楚。但是当我写size_t n时,很明显n代表某物的大小。当我写socklen_t n时,很明显n代表与套接字相关的内容的长度。

第二个原因是可移植性。例如,保证socklen_t至少为32位。现在,如果我们只写unsigned n,则n的大小可能小于32位。 size_t可以容纳任何对象的大小,但是实际值是实现定义的。当我们使用纯整数时,可能会发生sizeof(int)无法容纳理论上可能的最大对象的大小。但是使用size_t不会出现这种可移植性问题。

uint16_t清楚地表明,它是16位无符号整数,比使用unsigned intunsigned short既清晰又可移植。

答案 1 :(得分:2)

首先,它提供了更高的可读性

第二,在为嵌入式系统或跨平台进行编程时或在可移植性很重要时,有必要明确说明所使用的数据类型的大小-使用这些特定的数据类型可以避免混淆,并保证具有定义的数据宽度。