C语言中如何声明无符号短整型变量?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1023个文字,预计阅读时间需要5分钟。
它就是 `unsigned short`,`unsigned short int` 是合法的,但多余的完整写法,编译器会将其视为同一类型。C++ 标准中 `int` 在 `short` 后面是可选的,就像 `signed int` 可以简写为 `signed` 一样。
实际编码中几乎没人写 unsigned short int,原因有三:一是多打五个字符,二是易读性没提升,三是部分旧代码检查工具会警告“冗余类型说明符”。
-
unsigned short—— 推荐,简洁且无歧义 -
uint16_t—— 更推荐(需#include <cstdint>),语义明确、宽度固定 -
unsigned short int—— 合法,但属于教科书式写法,工程中少见
为什么不能直接用 unsigned short 存储 65535 就一定安全?
因为 unsigned short 的位宽不保证是 16 位,只保证 ≥16 位(C++ 标准要求至少能表示 0 到 65535)。在绝大多数桌面/服务器平台(x86/x64)上它是 16 位,但在某些嵌入式平台(比如 TI C2000 系列 DSP)上可能是 20 位甚至 24 位。
这意味着:如果代码依赖“正好 16 位”做位操作、内存布局或网络传输,直接用 unsigned short 会出问题。
本文共计1023个文字,预计阅读时间需要5分钟。
它就是 `unsigned short`,`unsigned short int` 是合法的,但多余的完整写法,编译器会将其视为同一类型。C++ 标准中 `int` 在 `short` 后面是可选的,就像 `signed int` 可以简写为 `signed` 一样。
实际编码中几乎没人写 unsigned short int,原因有三:一是多打五个字符,二是易读性没提升,三是部分旧代码检查工具会警告“冗余类型说明符”。
-
unsigned short—— 推荐,简洁且无歧义 -
uint16_t—— 更推荐(需#include <cstdint>),语义明确、宽度固定 -
unsigned short int—— 合法,但属于教科书式写法,工程中少见
为什么不能直接用 unsigned short 存储 65535 就一定安全?
因为 unsigned short 的位宽不保证是 16 位,只保证 ≥16 位(C++ 标准要求至少能表示 0 到 65535)。在绝大多数桌面/服务器平台(x86/x64)上它是 16 位,但在某些嵌入式平台(比如 TI C2000 系列 DSP)上可能是 20 位甚至 24 位。
这意味着:如果代码依赖“正好 16 位”做位操作、内存布局或网络传输,直接用 unsigned short 会出问题。

