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

判断两个数运算是否越界

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

判断两个数运算是否越界

在很多场景中越界是个必不可少需要去判断的问题,算术运算的越界都会导致不可预知的错误和安全漏洞,同时也会出现不可预估的错误,所以越界判断尤为重要。下面程序只经过有限的测试,使用过程中如发生错误请提出修改。

以下返回值1代表越界,0代表正常

1.两个数相加是否越界(一个带符号一个不带符号,下同)

int tadd_ok(int x, int y)
{
	return ((x<0 && y<0) && (x + y>0)) || ((x>0 && y>0) && (x + y<0));
}

int uadd_ok(unsigned int x, unsigned int y)
{
	return !((x + y)>x && (x + y)>y);
}

如果是其他字长的数,应该只需改传参即可

2.减法

int tsub_ok(int x, int y)
{
	return tadd_ok(x, -y);
}

int usub_ok(unsigned int x, unsigned int y)
{
	return x < y;
}

3.乘法

int umul_ok(unsigned int x, unsigned int y)
{
	unsigned int p = x * y;
	return !x || p/x==y;
}

int tmul_ok(int x, int y)
{
#if 1
	int p = x * y;
	return !x || p / x == y;
#else
	return umul_ok(x, y); 
#endif
}

参考:C语言怎样判断乘法越界,如何判断C语言算术运算的越界问题_weixin_39699121的博客-CSDN博客
C语言怎样判断乘法越界,如何判断C语言算术运算的越界问题_weixin_39699121的博客-CSDN博客

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

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

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