本文整理汇总了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());
}