在程序运行中,如果运算结果太大超出了所定义的类型,那么可能会影响整个程序的运行结果,甚至是程序出错。

因此,在编写程序时,加入越界处理就显得一起重要了。

用整型 int 来举个例子吧,int型占四个字节,也就是32位,其中第一位(最高位)为符号。

#define INT_MAX ( (1 << 31) - 1)    //定义int最大值
#define INT_MIN ( 1 << 31) //定义int最小值 或者
int max = 0x7fffffff;
int min = 0x80000000;
  十六进制 二进制位 10进制数字
    1 0x00000001 0000 0000 0000 0000 0000 0000 0000 0001  1
(1<<31) 0x7fffffff 1000 0000 0000 0000 0000 0000 0000 0000 -2 147 483 648
(1<<31)-1 0x800000000  0111  1111 1111  1111  1111  1111  1111 1111  2 147 483 647

(1<<31)得到最高位为 1 其余为为 0 ,即 2的31次方。同时最高位符号位为1,表示负数。得到 int最小值 -2 147 483 648

(1<<31)-1  最高位 0 其余位为 1,即 2的31次方 -1  。得到 int最大值 2 147 483 647。

同理,十六进制的 0x7fffffff 与 0x800000000 也可以表示 int型的取值范围。

最后,通过在程序中判断是否越界即可。

例:注意 result 的类型取值应大于int

        if (result > INT_MAX)
}
return INT_MAX;
{ else if (result < INT_MIN)
{
return INT_MIN;
}
        if (result > max)    return max;

        else if (result < min)    return min;

int 越界处理的更多相关文章

  1. char的越界赋值即其原理剖析

    思考: int ch = 'A'; int ch1 = 65; int ch2 = 321; printf("%c %c %c\n", ch, ch1, ch2);的输出结果是什么 ...

  2. Codeforces Round #379 (Div. 2) Analyses By Team:Red & Black

    A.Anton and Danik Problems: 给你长度为N的,只含'A','D'的序列,统计并输出何者出现的较多,相同为"Friendship" Analysis: lu ...

  3. bug0

    1,编码 之前做支付验证的时候,sdk的平台token串有的就是会有空格,折腾了很久,前后端对调好多次都没发现这个问题.结果有的平台验证通过,有的通不过. 仔细调试后发现不通过的url中参数串都是带有 ...

  4. 牛客OJ——[编程题]A+B和C__如何输入多组测试数据(测试OK)

    几个要注意的地方: (1)Java OJ,必须将类名写成Main (2)关于如何输入多组测试数据,用二维数组去存储是一个方法,直接在while里面做也可以          但是如果  (3)关于整形 ...

  5. x的平方根

    class Solution { public: /** * @param x: An integer * @return: The sqrt of x */ int getResult(long s ...

  6. GoogleCodeJam

    2016年没有参赛,在师兄的介绍下,试了一下简单的一题,需要注意的是读写数据的形式还有具体代码. 2016资格赛 A题 Problem Bleatrix Trotter the sheep has d ...

  7. Python:鲜为人知的功能特性(下)

    GitHub 上有一个名为<What the f*ck Python!>的项目,这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性,并尝试讨论这些 ...

  8. POJ 1426 Find The Multiple(背包方案统计)

    Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...

  9. 【Leetcode】【Medium】Sqrt(x)

    Implement int sqrt(int x). Compute and return the square root of x. 解题思路1,o(log(n)): 像这种从初始遍历查找匹配的任务 ...

随机推荐

  1. dockerfile 使用 entrypoint,导致 docker 无法正确挂载的问题

    一开始 Dockerfile 如下: FROM golang:latest WORKDIR $GOPATH/src/hellodocker COPY . .RUN go build . EXPOSE ...

  2. 分布式系统下的CAP定理

    本文参考EricBrewer博客加上自己的理解整理. CAP定理又被成为布鲁尔定理,是加州大学计算机科学家埃里克·布鲁尔提出来的猜想,后来被证明成为分布式计算领域公认的定理. CAP定义,在高并发的场 ...

  3. 反射、静态代理、动态代理(jdk、cglib)

    一.反射 反射在之前的文章中详细的解释过了,简单概括就是:可以动态的获取到一个类内部的所有的信息,动态的去创建对象和使用对象以及可以操作对象的属性和方法. 二.代理 首先解释一下代理:使用一个代理对象 ...

  4. mysql什么时候会发生file sort

    看了网上很多排名很靠前的博客,发现好多都讲错了!我开始按照博客来,没有怀疑,直到自己试了一下才发现是错的. file sort在面试中有时候会问到,这个其实挺能区分是不是真的了解order by的执行 ...

  5. 矩池云 | 利用LSTM框架实时预测比特币价格

    温馨提示:本案例只作为学习研究用途,不构成投资建议. 比特币的价格数据是基于时间序列的,因此比特币的价格预测大多采用LSTM模型来实现. 长期短期记忆(LSTM)是一种特别适用于时间序列数据(或具有时 ...

  6. Linux网卡ifcfg-eth0配置详解

    DEVICE="eth1"                              网卡名称 NM_CONTROLLED="yes"            n ...

  7. vscode使用python虚拟环境

    vscode使用python虚拟环境 创建好虚拟环境之后,在vscode中配置使用python的虚拟环境. 首先打开设置,然后搜索python venv, 在python: Venv Path中设置为 ...

  8. php——字符串的""和null,empty的关系

    public function test(){ $test = ""; if($test==null){ echo "test==null <hr>" ...

  9. 开源版-阿里云人脸搜索M:N,人脸比对1:1

    一.人脸搜索概要 本项目是阿里云视觉智能开放平台的人脸1:N的开源替代,项目中使用的模型均为开源模型,项目支持milvus和proxima向量存储库,并具有较高的自定义能力. 项目使用纯Java开发, ...

  10. java web中统一结果返回封装类JsonResult

    废话不多说,直接上代码,源代码是慕课网老师风间影月写的,我拿来直接用了. package com.yb.entity; import java.util.List; import com.faster ...