记一次数据类型长度踩的坑

前言

写这篇博客纯粹是为了记录一下自己的惨痛经历,因为数据长度越界,对数据长度不敏感,导致一个问题找了一个下午,加深一下对数据长度的理解

数据类型有哪些

实质上,在C语言里面,数据类型只有4种,整型,浮点型,指针,聚合类型(数组,结构体),其他都是衍生而来
这里只是对常用的数据类型总结一下:

数据类型32位机器下范围
char (1字节)0~127
unsigned char(1字节)0 ~ 255
signed char(1字节)-127 ~ 127
short int(2字节)-32767 ~ 32767
unsigned short int(2字节)0 ~ 65535
int(4字节)-2147483647~ 2147483647
unsigned int(4字节)0 ~ 4294967295
long int(4字节)-2147483647 ~ 2147483647
unsigned long int(4字节)0 ~ 4294967295

注意这里写的是32位机器范围,最后能决定长度范围的是你的编译器的最高位是多少

就是这个地方让我吃了大亏,在使用strtol函数时,没注意解析出来的数已经超过了long int ,4个字节的长度,导致查了一下午。最为致命的是,写了个demo在本地跑,同样的数据同样的代码没有出错,结果放到另外一个环境下运行时,就报错了,所以以后平台移植以及数据长度一定得注意。
本地能跑过时因为本地编译的C语言用的64位去编的,64位下的long int 是8字节,所以没报错。
将strtol 改为 strtoll就好了。

这里有篇不错的博客,详细介绍了32位和64位下数据长度的变化:
http://blog.sina.com.cn/s/blog_57421ff80100c7g1.html

本 PPT 介绍了制药厂房中供配电系统的总体概念与设计要点,内容包括: 洁净厂房的特点及其对供配电系统的特殊要求; 供配电设计的一般原则与依据的国家/行业标准; 从上级电网到工厂变电所、终端配电的总体结构与模块化设计思路; 供配电范围:动力配电、照明、通讯、接地、防雷与消防等; 动力配电中电压等级、接地系统形式(如 TN-S)、负荷等级与可靠性、UPS 配置等; 照明的电源方式、光源选择、安装方式、应急与备用照明要求; 通讯系统、监控系统在生产管理与消防中的作用; 接地与等电位连接、防雷等级与防雷措施; 消防设施及其专用供电(消防泵、排烟风机、消防控制室、应急照明等); 常见高压柜、动力柜、照明箱等配电设备案例及部分设计图纸示意; 公司已完成的典型项目案例。 1. 工程背景与总体框架 所属领域:制药厂房工程的公用工程系统,其中本 PPT 聚焦于供配电系统。 放在整个公用工程中的位置:与给排水、纯化水/注射用水、气体与热力、暖通空调、自动化控制等系统并列。 2. Part 01 供配电概述 2.1 洁净厂房的特点 空间密闭,结构复杂、走向曲折; 单相设备、仪器种类多,工艺设备昂贵、精密; 装修材料与工艺材料种类多,对尘埃、静电等更敏感。 这些特点决定了:供配电系统要安全可靠、减少积尘、便于清洁和维护。 2.2 供配电总则 供配电设计应满足: 可靠、经济、适用; 保障人身与财产安全; 便于安装与维护; 采用技术先进的设备与方案。 2.3 设计依据与规范 引用了大量俄语标准(ГОСТ、СНиП、SanPiN 等)以及国家、行业和地方规范,作为设计的法规基础文件,包括: 电气设备、接线、接地、电气安全; 建筑物电气装置、照明标准; 卫生与安全相关规范等。 3. Part 02 供配电总览 从电源系统整体结构进行总览: 上级:地方电网; 工厂变电所(10kV 配电装置、变压
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值