博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
语言中的溢出
阅读量:1986 次
发布时间:2019-04-27

本文共 1236 字,大约阅读时间需要 4 分钟。

语言中的溢出分为缓冲区溢出,内存溢出和数据溢出。最常见的就是数据溢出,当要表示的数据超出计算机所使用的数据类型所能够表示d的范围时,就会产生数据的溢出

假如有一个需求:计算从0到10,0到100,0到1000,0到10000,0到100000的和

using System;class Program{    static void Main(string[] args)    {        int sum = 0;        for (int i = 0; i <= 10; i++)        {            sum += i;        }        Console.WriteLine(sum);        sum = 0;        for (int i = 0; i <= 100; i++)        {            sum += i;        }        Console.WriteLine(sum);        sum = 0;        for (int i = 0; i <= 1000; i++)        {            sum += i;        }        Console.WriteLine(sum);        sum = 0;        for (int i = 0; i <= 10000; i++)        {            sum += i;        }        Console.WriteLine(sum);        sum = 0;        for (int i = 0; i <= 100000; i++)        {            sum += i;        }        Console.WriteLine(sum);    }}

运行后的输出结果:

不难看出结果是有规律性的,但是当计算从0到10000的和时,结果却很奇怪,这就是语言中的溢出现象,因为我们定义的sum是int型,C#中int型能表示的数值范围如下:
可见5000050000超过了int类型可表示的范围,所以产生了溢出现象导致数字错乱
如果把sum变量的类型改为比int类型能表示的数字范围大的类型,则不会溢出,例如double类型

using System;class Program{    static void Main(string[] args)    {        double sum = 0;        for (int i = 0; i <= 100000; i++)        {            sum += i;        }        Console.WriteLine(sum);    //5000050000    }}

转载地址:http://cxyvf.baihongyu.com/

你可能感兴趣的文章
how2heap-double free
查看>>
how2heap-fastbin_dup_consolidate
查看>>
orw_shellcode_模板
查看>>
[fmt+shellcode]string
查看>>
fmt在bss段(neepusec_easy_format)
查看>>
python 函数式编程
查看>>
python编码
查看>>
redis cli
查看>>
redis api
查看>>
flink physical partition
查看>>
java 解析json
查看>>
java http请求
查看>>
tensorflow 数据格式
查看>>
tf rnn layer
查看>>
tf input layer
查看>>
tf model create
查看>>
tf dense layer两种创建方式的对比和numpy实现
查看>>
tf initializer
查看>>
tf 从RNN到BERT
查看>>
tf keras SimpleRNN源码解析
查看>>