栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言程序——数据的溢出

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言程序——数据的溢出

文章目录
  • 前言
  • 一、数据类型的精度
  • 二、程序实例
  • 总结


前言

数据类型规定了数据的存储空间,因此计算机中不能存储无穷大和无穷小的数,每种数据类型的数据可以表示一个范围或精度内的数据,如果超出了,就会发生数据溢出,导致无法显示运算结果。


一、数据类型的精度

C语言一共提供了6种基本的整型数据类型,有int、short、long,其中每一种加上unsigned构成无符号型。系统分别给相应的变量预留空间分别为2、2、4个字节,每个字节有八位二进制位。有符号整型变量最大只能表示32767;无符号整型变量最大只能表示65535。
C语言常用的实型常量有float和double型。系统为其变量预留的空间分别是4、8个字节。单精度实型数据有效位数是6~7位,双精度实型数据有效数是15 ~16位。
C语言中只含有一个字符的类型char,系统预留的存储空间位1个字节,可以表示0~255范围内的数据,超出范围溢出。

二、程序实例

代码如下:

#include 
void main()
{
	int a0,b0;
	unsigned u1,u2;
	float a1,a2,b2;
	double b1;
	u1=0;
	a0=32767;
	b0=a0+1;
	u2=u1-1;
	a1=33333.33333;
	a2=123456.789e5;
	b2=a2+20;
	b1=33333.33333333333333333;
	printf("%d,%dn",a0,b0);
	printf("%u,%un",u1,u2);
	printf("%fn%fn",a1,b1);
	printf("%fn",a2);
	printf("%fn",b2);
}

运行结果:

结果分析:

  1. 可以看到整型变量a0定义为32767,32767是整型变量的最大限度,当将a0+1赋值给b0,得到b0的值是-32768而不是32768出现了运算错误。
  2. u1,u2均位无符号变量,当给u1设为0值时,u2设为u1-1得到的u2的值不是-1而是65535,可见无符号整型数据无法进行负数类的运算。
  3. 单精度和双精度可以表示的数据的有效数字位6~7和15 ~16位,当赋值的数字超过了范围,输出的数据会被截取。
  4. a2值相当大,所以当将a2的值加20 赋值给b2时,可以看到a2和b2的值是一样的,不是没有运算,是因为20 对于a2的值比较太小可以忽略不计。

总结

以上就是今天要讲的内容,本文仅仅简单介绍C语言中数据溢出的实例。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/957737.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号