编程中整数类型:别再搞混 int、long 和 short 了

ref="/tag/132/" style="color:#643D3D;font-weight:bold;">编程中整数型的实际应用

写代码时,整数类型是最常见的数据类型之一。很多人觉得 int 就够用了,但在实际开发中,选错类型可能带来内存浪费甚至程序崩溃。

比如你在写一个嵌入式系统,设备内存只有几 KB,这时候用 long 存储一个年龄值,明显是杀鸡用牛刀。反过来,在计算用户ID时,如果用 short,等到用户量上万就溢出了。

常见整数类型的取值范围

不同语言略有差异,但以 C/C++ 为例:

short: 占 2 字节,范围 -32,768 到 32,767
int: 占 4 字节,范围 -2,147,483,648 到 2,147,483,647
long: 在 64 位系统通常占 8 字节,范围更大
unsigned int: 只存非负数,范围 0 到 4,294,967,295

这些数字不是背下来就行,关键是要知道什么时候该用哪个。

实际场景怎么选?

如果你在写一个记录温度的小程序,城市气温一般在 -50 到 50 度之间,用 short 完全足够。但如果要处理年份,比如表示公元年份,用 unsigned short 最多只能到 65535,看着够,可万一哪天要处理天文年代或未来预测呢?

再比如做计数器,统计网站访问量。int 看着最大能到 21 亿,但热门页面几分钟就超了。这时候就得上 long 或 unsigned long long。

Java 里没有 unsigned 类型,这点要特别注意。所有 int 都是有符号的,最大值固定在 21 亿左右,超过就得换 long。

别忽视语言和平台差异

同样的 int,在 32 位和 64 位系统上大小可能一样,但 long 不一定。Linux 下 C 的 long 在 64 位是 8 字节,Windows 上却是 4 字节。跨平台开发时,这种差异容易埋雷。

因此,现代 C++ 推荐使用固定宽度的类型,比如 int32_t、uint64_t。它们明确定义了字节数,避免歧义。

#include <stdint.h>

int32_t userId; // 明确 32 位整数
uint64_t fileSize; // 无符号 64 位,适合大文件大小

这类类型在处理网络协议、文件格式、数据库字段时尤其有用,确保数据在不同设备上解释一致。

下次声明变量前,花三秒想想:这个数最小可能是多少?最大会到哪?多久更新一次?值是否可能溢出?这些问题比记住类型表更重要。