fun().size() == 0 真值的怪异困惑
typedef map<INT_ELEMID,TBandRule *> typeMapBandRuleForElem;
class TPolicy
{
private:
TPolicyInfo *m_PolicyInfo;
typeMapBandRuleForElem m_mapBandRule;
.....
public:
typeMapBandRuleForElem &mapBandRule(){return m_mapBandRule;}
....
public:
};
情况一:
printf("m_Policy->mapBandRule().size():%d\n",m_Policy->mapBandRule().size());
if(0 == m_Policy->mapBandRule().size())
{
printf("here 0\n");
return ;
//throw 0;
}else{
printf("here 1\n");
}
输出结果是
m_Policy->mapBandRule().size():0
here 0
情况二:
printf("m_Policy->mapBandRule().size():%d\n",m_Policy->mapBandRule().size());
int tmpSize = m_Policy->mapBandRule().size();
if(0 == tmpSize)
{
printf("here 0\n");
return ;
//throw 0;
}else{
printf("here 1\n");
}
输出结果是
m_Policy->mapBandRule().size():0
here 1
请问下两种写法为什么会出现这样区别啊?
为什么第一种情况 if 里面的条件不是true呢?
[解决办法]
情况二:
printf("m_Policy->mapBandRule().size():%d\n",m_Policy->mapBandRule().size());
int tmpSize = m_Policy->mapBandRule().size();
你的map大小确定为0了,
但是这里 tmpSize 没赋到0 ??
[解决办法]
调试跟踪一下吧,中间有些值可能与想的不一样