返回bool值的函数执行不成功返回什么?

zzmsix 2013-02-23 06:30:37
这里有两段代码:

bool Hero::heroInit()
{
heroSprite=CCSprite::create("p1tankU.png");
heroSprite->setAnchorPoint(CCPointZero);
this->addChild(heroSprite);
isHeroMoving=false;
return true;
}
bool GameLayer::init()
{
bool bRet = false;
do
{
sGlobal->gameMap=GameMap::gameMapWithTMXFile("0.tmx");
addChild(sGlobal->gameMap,kZMap,kZMap);
sGlobal->hero=Hero::heroWithinLayer();
sGlobal->hero->setPosition(sGlobal->gameMap->positionForTileCoord(ccp(4,9)));
addChild(sGlobal->hero,kZHero,kZHero);
bRet = true;
} while (0);

return bRet;
}

第一个函数执行成功会返回true,如果执行不成功呢?会返回什么?是不是返回默认值?是多少?相比第二个函数更严谨一些,上来先设置了false.第一个函数是不是也隐含着不成功返回false?
...全文
490 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
苹果皮 2013-02-25
  • 打赏
  • 举报
回复
你这两个函数 如果没有意外发生,全部返回true 第一个函数应该 if(error) return false; 第二个函数应该 if (errir) break; 这样好一些。
Defonds 2013-02-25
  • 打赏
  • 举报
回复
还是严谨一些比较好
太上绝情 2013-02-24
  • 打赏
  • 举报
回复
第一个要么返回true要么程序被强行杀掉
billzheng 2013-02-24
  • 打赏
  • 举报
回复
引用 3 楼 ForestDB 的回复:
第一个函数return true;永远返回true,不可能返回false。 第二个函数return bRet;返回bRet,那它是什么,就是什么。
什么情况下第二个函数返回false?
billzheng 2013-02-24
  • 打赏
  • 举报
回复
引用 5 楼 ZLhy_ 的回复:
你的第一个函数的返回值写法在逻辑上是不成对的,你有返回true却没有false,这就是逻辑的不完整了。你的第一个函数一般情况下都是执行到的return语句那里,除非是意外中断了。所以你可以考虑将你的第一个函数返回值设置为void啊。或者将第一个函数改一下: C/C++ code?123456789101112131415bool Hero::heroInit(){if(……
yikes
疯狂的红豆 2013-02-24
  • 打赏
  • 举报
回复
你的第一个函数的返回值写法在逻辑上是不成对的,你有返回true却没有false,这就是逻辑的不完整了。你的第一个函数一般情况下都是执行到的return语句那里,除非是意外中断了。所以你可以考虑将你的第一个函数返回值设置为void啊。或者将第一个函数改一下:

bool Hero::heroInit()
{
if(true)
{
    heroSprite=CCSprite::create("p1tankU.png");
    heroSprite->setAnchorPoint(CCPointZero);
    this->addChild(heroSprite);
    isHeroMoving=false;
    return true;
}
else
{
return flase;
}
}
ForestDB 2013-02-24
  • 打赏
  • 举报
回复
第一个函数return true;永远返回true,不可能返回false。 第二个函数return bRet;返回bRet,那它是什么,就是什么。
billzheng 2013-02-23
  • 打赏
  • 举报
回复
第一个函数只有一个返回点,就是最后一行返回true。除非里面调用的函数抛出异常,否则heroInit只能返回true. 第二个函数先什么了一个bRet变量,然后进行赋值,接着一个 do/while语句,然后对bRet 继续赋值,最后返回。这些操作有必要么???一来增加一个变量操作,而来多了个循环毫无意义。 do/while(0);一般在宏里面用的比较多。所以第一个函数设计好一些。
xinhua0910 2013-02-23
  • 打赏
  • 举报
回复
你第一个函数,只要不意外退出,肯定是返回true,因为不管你执行了什么出错了,最后都走到了return true; 第二个函数,先把bRet初始化为false,如果下面走到了“bRet = true;”一次(不管你while循环了多少次),肯定是返回成功。除非进循环第一次循环处理时在走到“bRet = true;”前跳出来了,才有可能为false

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧