采取2个间隔的交叉点

时间:2017-02-11 20:45:49

标签: c++ overflow

我有两个范围。一个固定的Start,End。一个是在for循环中计算的,我根据某些条件改变了间隔。

基本上我想打印从间隔[Start,End][MIN,MAX]之间的交点获得的集合的基数(如果存在)。

#define INF numeric_limits<double>::infinity();
unsigned long long MAX= INF;
unsigned long long MIN=0;
for(;;)
{
   // conditions
   MAX=max(MAX,variable1);
   MIN=min(MIN,variable2);
}
cout<<(min(MAX,End)-max(MIN,Start) +1);

现在问题是当没有交叉点时,答案是一个非常大的整数。好像Interals [Start,End]和[MIN,MAX]之间的交集不存在,它应该打印0。

我认为问题是由于溢出或/和INF数据类型(double)和变量数据类型(unsigned long long)相关。

我该如何纠正?

0 个答案:

没有答案