int 越界处理
在程序运行中,如果运算结果太大超出了所定义的类型,那么可能会影响整个程序的运行结果,甚至是程序出错。
因此,在编写程序时,加入越界处理就显得一起重要了。
用整型 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 越界处理的更多相关文章
- char的越界赋值即其原理剖析
思考: int ch = 'A'; int ch1 = 65; int ch2 = 321; printf("%c %c %c\n", ch, ch1, ch2);的输出结果是什么 ...
- Codeforces Round #379 (Div. 2) Analyses By Team:Red & Black
A.Anton and Danik Problems: 给你长度为N的,只含'A','D'的序列,统计并输出何者出现的较多,相同为"Friendship" Analysis: lu ...
- bug0
1,编码 之前做支付验证的时候,sdk的平台token串有的就是会有空格,折腾了很久,前后端对调好多次都没发现这个问题.结果有的平台验证通过,有的通不过. 仔细调试后发现不通过的url中参数串都是带有 ...
- 牛客OJ——[编程题]A+B和C__如何输入多组测试数据(测试OK)
几个要注意的地方: (1)Java OJ,必须将类名写成Main (2)关于如何输入多组测试数据,用二维数组去存储是一个方法,直接在while里面做也可以 但是如果 (3)关于整形 ...
- x的平方根
class Solution { public: /** * @param x: An integer * @return: The sqrt of x */ int getResult(long s ...
- GoogleCodeJam
2016年没有参赛,在师兄的介绍下,试了一下简单的一题,需要注意的是读写数据的形式还有具体代码. 2016资格赛 A题 Problem Bleatrix Trotter the sheep has d ...
- Python:鲜为人知的功能特性(下)
GitHub 上有一个名为<What the f*ck Python!>的项目,这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性,并尝试讨论这些 ...
- POJ 1426 Find The Multiple(背包方案统计)
Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...
- 【Leetcode】【Medium】Sqrt(x)
Implement int sqrt(int x). Compute and return the square root of x. 解题思路1,o(log(n)): 像这种从初始遍历查找匹配的任务 ...
随机推荐
- dockerfile 使用 entrypoint,导致 docker 无法正确挂载的问题
一开始 Dockerfile 如下: FROM golang:latest WORKDIR $GOPATH/src/hellodocker COPY . .RUN go build . EXPOSE ...
- 分布式系统下的CAP定理
本文参考EricBrewer博客加上自己的理解整理. CAP定理又被成为布鲁尔定理,是加州大学计算机科学家埃里克·布鲁尔提出来的猜想,后来被证明成为分布式计算领域公认的定理. CAP定义,在高并发的场 ...
- 反射、静态代理、动态代理(jdk、cglib)
一.反射 反射在之前的文章中详细的解释过了,简单概括就是:可以动态的获取到一个类内部的所有的信息,动态的去创建对象和使用对象以及可以操作对象的属性和方法. 二.代理 首先解释一下代理:使用一个代理对象 ...
- mysql什么时候会发生file sort
看了网上很多排名很靠前的博客,发现好多都讲错了!我开始按照博客来,没有怀疑,直到自己试了一下才发现是错的. file sort在面试中有时候会问到,这个其实挺能区分是不是真的了解order by的执行 ...
- 矩池云 | 利用LSTM框架实时预测比特币价格
温馨提示:本案例只作为学习研究用途,不构成投资建议. 比特币的价格数据是基于时间序列的,因此比特币的价格预测大多采用LSTM模型来实现. 长期短期记忆(LSTM)是一种特别适用于时间序列数据(或具有时 ...
- Linux网卡ifcfg-eth0配置详解
DEVICE="eth1" 网卡名称 NM_CONTROLLED="yes" n ...
- vscode使用python虚拟环境
vscode使用python虚拟环境 创建好虚拟环境之后,在vscode中配置使用python的虚拟环境. 首先打开设置,然后搜索python venv, 在python: Venv Path中设置为 ...
- php——字符串的""和null,empty的关系
public function test(){ $test = ""; if($test==null){ echo "test==null <hr>" ...
- 开源版-阿里云人脸搜索M:N,人脸比对1:1
一.人脸搜索概要 本项目是阿里云视觉智能开放平台的人脸1:N的开源替代,项目中使用的模型均为开源模型,项目支持milvus和proxima向量存储库,并具有较高的自定义能力. 项目使用纯Java开发, ...
- java web中统一结果返回封装类JsonResult
废话不多说,直接上代码,源代码是慕课网老师风间影月写的,我拿来直接用了. package com.yb.entity; import java.util.List; import com.faster ...