当前位置: 首页>>代码示例>>C++>>正文


C++ BigData::_IsINT64OverFlow方法代码示例

本文整理汇总了C++中BigData::_IsINT64OverFlow方法的典型用法代码示例。如果您正苦于以下问题:C++ BigData::_IsINT64OverFlow方法的具体用法?C++ BigData::_IsINT64OverFlow怎么用?C++ BigData::_IsINT64OverFlow使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BigData的用法示例。


在下文中一共展示了BigData::_IsINT64OverFlow方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: BigData

BigData BigData::operator-(const BigData& bigData)
{
	//左右操作数都没有溢出
	if (!_IsINT64OverFlow() && !bigData._IsINT64OverFlow())
	{
		//同号相减一定不会溢出
		if (_strData[0] == bigData._strData[0])
		{
			return BigData(_value - bigData._value);
		} 
		//异号相减有可能溢出或者不溢出
		else
		{
			//以下是异号不溢出的情况
			//正 - 负	负 - 正
			if ((_strData[0] == '+' && (MAX_INT64 + bigData._value) >= _value) || 
				(_strData[0] == '-' && (MIN_INT64 + bigData._value) <= _value))
			{
				return BigData(_value - bigData._value);
			}
		}
	}

	//当走到这里时,一定是这两种情况:
	//(1)操作数至少有一个已经溢出
	//(2)两个没有溢出的操作数结果相减结果溢出
	if (_strData[0] != bigData._strData[0])
	{
		//两个操作数异号,有可能是(正 - 负),也有可能是(负 - 正)的情况
		if (_strData[0] == '+')
		{
			//左操作数是正数,右操作数是负数
			//正 - 负 = 正 + 正 ------将右操作数转成正整数,调用_Add()函数
			(char)bigData._strData[0] = '+';//因为bigData是const对象,所以要强转成(char)才可以修改它的符号位
		}
		else	//_strData[0] == '-'
		{
			//左操作数是负数,右操作数是正数
			//负 - 正 = 负 + 负 -------- 将右操作数转成负数
			(char)bigData._strData[0] = '-';			
		}
		return BigData((char*)_Add(_strData,bigData._strData).c_str());
	}

	//同号相减调用_Sub函数
	return BigData((char*)_Sub(_strData,bigData._strData).c_str());
}
开发者ID:XHXaiXXR,项目名称:code,代码行数:47,代码来源:BigData.cpp


注:本文中的BigData::_IsINT64OverFlow方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。