首页 > 解决方案 > 为什么 C 中有这么多自定义数据类型?

问题描述

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

标签: cvariablescustom-data-type

解决方案


意图和可移植性。

例如,假设我有一个变量unsinged n。无符号整数可以表示很多东西,所以它的意图并不明确。但是当我写的时候size_t n,很明显它n代表了某物的大小。当我写socklen_t n的时候很明显,它n代表了与socket相关的东西的长度。

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

uint16_t清楚地表明它是 16 位的无符号整数,比使用unsigned intor更清晰且可移植unsigned short


推荐阅读