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)): 像这种从初始遍历查找匹配的任务 ...
随机推荐
- .NET 6 在小并发下如何生成唯一单据号
一.场景介绍 小并发下要解决生成单据号的问题,会碰到哪些问题呢?,接下来让我们一探究竟[这是小并发的解决方案,大家有更好的做好可以一起讨论分享]. 之所以叫小并发:是因为确实是小并发场景的应用模式,一 ...
- android --一个简单的登录界面
MainActivity.java package com.example.empty_project; import androidx.appcompat.app.AppCompatActivity ...
- Pycharm:Python2和3及其的Anaconda的正确设置
这两天学习需要用到第三方库pyKriging,然而电脑之前下载的是Python2.7,pyKriging只支持Python3.6,尝试了很多方法也无果后,只好重新下载Python3.6,由于在网上查到 ...
- LeetCode-040-组合总和 II
组合总和 II 题目描述:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字 ...
- 如何从头到脚彻底解决一个MySQL Bug
摘要:为了保障华为云GaussDB产品的可靠性,每一款产品发布前都要通过多轮严苛的测试用例. 说明:本文中的MySQL,如果不做特殊说明,指的是开源社区版MySQL. 华为云数据库新版本在发布之前,会 ...
- 微信退款通知,退款回调数据解密.SHA256签名AEAD_AES_256_GCM解密
$xmlResult = file_get_contents("php://input");//获取微信的数据$result = $this->xmlToArray($xml ...
- CF437C题解
思路很妙/youl 题目大意见翻译,说得很清楚/youl 首先,这个图到最后所有点都会被删除,所以所有边都会被删除. 但是考虑点的贡献会很麻烦,所以在这里我们考虑边的贡献. 边的贡献就是,左端点和右端 ...
- Python IO文件管理
文件操作 我们可以使用python来操作文件,比如读取文件内容.写入新的内容等,因为任何计算机文件的本质都是一些有不同后缀的字符组成的. python文件操作的两种模式 打开模式 while,写入模式 ...
- Mysql数据库索引的使用
1.索引的使用 查询 表的锁show index from qk_auth_employee 2.走索引 EXPLAIN SELECT * from qk_auth_employee where Da ...
- ListBox 控件模板
<Window x:Class="WpfApplication22.MainWindow" xmlns="http://schemas.microsoft.com/ ...