本文整理汇总了C++中BigData::IsINT64Owerflow方法的典型用法代码示例。如果您正苦于以下问题:C++ BigData::IsINT64Owerflow方法的具体用法?C++ BigData::IsINT64Owerflow怎么用?C++ BigData::IsINT64Owerflow使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BigData
的用法示例。
在下文中一共展示了BigData::IsINT64Owerflow方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BigData
BigData BigData::operator+(BigData& bigData)
{
if (!IsINT64Owerflow() && !bigData.IsINT64Owerflow()) //没有溢出
{
if (m_strData[0] != bigData.m_strData[0]) //异号
{
return BigData(m_llValue + bigData.m_llValue);
}
else
{
if (('+' == m_strData[0] && MAX_INT64 - m_llValue <= bigData.m_llValue)
|| ('-' == m_strData[0] && MIN_INT64 - m_llValue >= bigData.m_llValue))
{
return BigData(m_llValue + bigData.m_llValue);
}
}
}
std::string strRet;
if (m_strData[0] == bigData.m_strData[0])
{
return BigData((char*)Add(m_strData, bigData.m_strData).c_str());
//strRet = Add(m_strData, bigData.m_strData);
}
/*else
{
}*/
return BigData((char*)Sub(m_strData, bigData.m_strData).c_str());
}
示例2: BigData
BigData BigData::operator*(const BigData& bigData)
{
if (0 == m_llValue || 0 == bigData.m_llValue)
{
return BigData(INT64(0));
}
if (!IsINT64Owerflow() && !bigData.IsINT64Owerflow())
{
if (m_strData[0] == bigData.m_strData[0])//同号
{
// 10 /2 = 5 >= 1 2 3 4 5
// 10 /-2 = -5 <= -5 -4 -3 -2 -1
if (('+' == m_strData[0] && MAX_INT64 / m_llValue >= bigData.m_llValue) ||
('-' == m_strData[0] && MAX_INT64 / m_llValue <= bigData.m_llValue))
{
return BigData(m_llValue*bigData.m_llValue);
}
}
else//不同号
{
// -10 /2 = -5 <=
// -10/-2 = 5 >
if (('+' == m_strData[0] && MIN_INT64 / m_llValue <= bigData.m_llValue) ||
('-' == m_strData[0] && MIN_INT64 / m_llValue >= bigData.m_llValue))
{
return BigData(m_llValue*bigData.m_llValue);
}
}
}
return BigData(Mul(m_strData, bigData.m_strData).c_str());
}