c - 为什么 C 中有这么多自定义数据类型?
问题描述
为什么会有这么多自定义数据类型,如 socklen_t、ssize_t、size_t、uint16_t?我不明白他们的真正需要。对我来说,它们只是一堆需要学习的新变量名。
解决方案
意图和可移植性。
例如,假设我有一个变量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 int
or更清晰且可移植unsigned short
。
推荐阅读
- git - 如何拉取(由另一个人)在当前分支上所做的更改?
- selenium - 无论如何在 Selenium Webdriver 或 Katalon Studio 中测试 Web 表的排序功能?
- c# - 我有一些登录问题!想要一些建议 C#
- c# - 如何计算整数值范围的位(和字节)宽度
- javascript - Internet Explorer中特定班级的相同高度
- arrays - SAS 循环遍历列
- jquery - 如何修复此 jqueryui 功能
- bash - 解析顶级日志数据
- html - SVG 文本未在 Edge 或 IE 中显示
- android - Oreo,带有 PendingIntent 的 BLE 扫描仪 startScan 无法在三星设备上运行