news 2026/7/25 12:35:42

C语言的整型溢出问题 int、long、long long取值范围 最大最小值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言的整型溢出问题 int、long、long long取值范围 最大最小值

溢出和取值范围

C语言的整型溢出问题

整数溢出

int、long int 、long long int 占用字节疑问

《C和指针》中写过:long与int:标准只规定long不小于int的长度,int不小于short的长度。

double与int类型的存储机制不同,long int的8个字节全部都是数据位,而double是以尾数,底数,指数的形式表示的,类似科学计数法,因此double比int能表示的数据范围更广。

long long在win32中是确实存在,长度为8个字节;定义为LONG64。

为什么会出现long int呢?在win32现在系统中,长度为4;在历史上,或者其他某些系统中,int长度为2,是short int。

即便是long long,在TI的有款平台中,长度为5也就是说,每种类型长度,需要sizeof才知道,如果可能,最好用union看看里面的数据,可以消除一些类型的假象长度。

类型名称 字节数 取值范围 signed char 1 -128~+127 short int 2 -32768~+32767 int 4 -2147483648~+2147483647 long int 4 -2147483648~+2141483647 long long long int 8 -9223372036854775808~+9223372036854775807
unsigned int (unsigned long) 4字节8位可表达位数:2^32=42 9496 7296 范围:0 ~ 42 9496 7295 (42*10^8) int (long) 4字节8位可表达位数:2^32=42 9496 7296 范围:-21 4748 3648 ~ 21 4748 3647 (21*10^8) long long (__int64) 8字节8位可表达位数:2^64=1844 6744 0737 0960 0000 范围:-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 (922*10^16) unsigned long (unsigned __int64) 8字节8位可表达位数:2^64=1844 6744 0737 0960 0000 范围:0 ~ 1844 6744 0737 0955 1615 (1844*10^16)

最大值、最小值

在#include存有各个类型的最大值和最小值 CHAR_MIN char的最小值 SCHAR_MAX signed char 最大值 SCHAR_MIN signed char 最小值 UCHAR_MAX unsigned char 最大值 SHRT_MAX short 最大值 SHRT_MIN short 最小值 USHRT_MAX unsigned short 最大值 INT_MAX int 最大值 INT_MIN int 最小值 UINT_MAX unsigned int 最大值 UINT_MIN unsigned int 最小值 LONG_MAX long最大值 LONG_MIN long最小值 ULONG_MAX unsigned long 最大值 FLT_MANT_DIG float 类型的尾数 FLT_DIG float 类型的最少有效数字位数 FLT_MIN_10_EXP 带有全部有效数的float类型的负指数的最小值(以10为底) FLT_MAX_10_EXP float类型的正指数的最大值(以10为底) FLT_MIN 保留全部精度的float类型正数最小值 FLT_MAX float类型正数最大值

自己推算:

以int类型为例:

int为4字节32位,其中首位用0表示正数,用1表示为负数。因此对于

最大正数可以表示为:0x7fff ffff(7的二进制为0111,f二进制为1111)

最大负数(-1)可以表示为:0xffff ffff

最小负数可以表示为:0x8000 0000(8的二进制为1000)

负数为正数的源码取反码再取补码,过程如下:

1、-1的原码:10000000 00000000 00000000 00000001

2、得反码: 11111111 11111111 11111111 11111110

3、得补码: 11111111 11111111 11111111 11111111

最小负数没有并没有原码和反码表示,最高位为1,其余位为0。就是最小负数。

原码, 反码, 补码 详解

该如何选用类型

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 12:34:38

独立开发者如何借助Taotoken构建多模型AI应用原型

独立开发者如何借助Taotoken构建多模型AI应用原型 对于独立开发者或产品经理而言,构建一个AI应用原型是验证产品想法、吸引早期用户的关键一步。然而,这个过程常常伴随着一些现实的工程挑战:面对市场上众多的模型,如何快速选择并…

作者头像 李华
网站建设 2026/7/25 12:33:45

基于TI InstaSPIN-FOC的BLDC电机自动参数辨识与驱动设计详解

1. 项目概述与核心价值如果你做过无刷直流(BLDC)电机的磁场定向控制(FOC),那你一定对电机参数辨识这个环节又爱又恨。爱的是,准确的参数是FOC算法稳定和高性能运行的基石;恨的是,手动…

作者头像 李华
网站建设 2026/7/25 12:32:52

基于YOLOv8改进的摔倒检测算法优化与实践

1. 项目背景与核心价值摔倒检测是计算机视觉在公共安全领域的重要应用场景。传统监控系统依赖人工值守,难以实现724小时实时预警。基于YOLOv8的改进方案,我们实现了平均精度(mAP)提升3.2%,在复杂场景下的误报率降低40%…

作者头像 李华
网站建设 2026/7/25 12:30:09

基于C2000的数字双向DC-DC转换器软件控制实践与架构解析

1. 项目概述:从模拟到数字,一个双向DC-DC转换器的软件控制实践如果你正在设计一个需要能量双向流动的系统,比如电动汽车的车载充电机(OBC)、储能系统的双向变流器,或者任何需要在高压电池和低压电池/总线之…

作者头像 李华
网站建设 2026/7/25 12:28:36

利用Taotoken多模型能力为每日大赛设计智能评分助手

利用Taotoken多模型能力为每日大赛设计智能评分助手 对于每日举办的设计或写作类大赛,主办方面临着海量参赛作品的初步筛选压力。人工评审耗时耗力,且难以保证绝对的客观性与一致性。借助大模型进行智能辅助评分,已成为提升运营效率的有效路…

作者头像 李华