我有两个范围。一个固定的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)相关。
我该如何纠正?