首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

fun().size() == 零 真值的怪异困惑

2012-06-23 
fun().size() 0 真值的怪异困惑typedef mapINT_ELEMID,TBandRule * typeMapBandRuleForElemclass TP

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 ??

[解决办法]
调试跟踪一下吧,中间有些值可能与想的不一样

热点排行