请教一C++for语句段的一个清晰写法?

发表于:2008-11-06 14:54:50 楼主
如题,请各位大侠看一下,可以帮忙改写为阅读起来比较清晰的写法吗?多谢!

        void main()
{
        ... // do something
        ...
for(int m=0;m <5;m++)
{
                ErrCode = Get_Curr_Inv ((byte *) &inv_message.InvNumber);
if(!ErrCode)
break;
else if(ErrCode && m <= 4)
{
MyCardReset();
continue;
}
return ErrCode;
}
        ...  // do something
        ...
}
30  修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • xhs_lh04
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:04:021楼 得分:5
没啥缩进加下,没啥了

下面这样,也行.更简洁一些,循环里判断更少些,效率好点
C/C++ code
           
           
for ( int m = 0 ;m < 5 ;m ++ ) { ErrCode = Get_Curr_Inv (( byte * ) & inv_message.InvNumber); if ( ! ErrCode) break ; MyCardReset(); } if (ErrCode) return ErrCode; ...
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • hhyttppd
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:05:462楼 得分:5
引用 1 楼 xhs_lh04 的回复:
没啥缩进加下,没啥了

下面这样,也行.更简洁一些,循环里判断更少些,效率好点

C/C++ code
  for(int m=0;m <5;m++)
  {
    ErrCode = Get_Curr_Inv ((byte *) &inv_message.InvNumber);
    if(!ErrCode)
      break;

    MyCardReset();
  }
  if (ErrCode)
    return ErrCode;
  ...


落后了,刚上贴上去,发现跟你的一样。。。。汗。。。
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • hhyttppd
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:08:103楼 得分:2
不过原语句中return ErrCode; 好像永远不可能执行到。
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • stardust20
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:12:464楼 得分:1
引用 3 楼 hhyttppd 的回复:
不过原语句中return ErrCode; 好像永远不可能执行到。

支持
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • yaoike
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:14:225楼 得分:0
-_-/// 谢谢提醒,的确如此...
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • xxgamexx
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:15:086楼 得分:2
void main()
{
  ....

  return ErrCode;

}
??????LZ没写错吧~
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • lgccaa
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:15:267楼 得分:5
不必要的判断不要随便加
C/C++ code
           
           
void main() { ... // do something ... for ( int m = 0 ;m < 5 ;m ++ ) { ErrCode = Get_Curr_Inv (( byte * ) & inv_message.InvNumber); if ( ! ErrCode) break ; else if (ErrCode && m <= 4 ) // 这里的m<=4是不必要的,for循环已经限定了 { MyCardReset(); continue ; } // 你这里其实就两种情况,不必要用这么复杂的判断条件 // 用下面的判断就可以完成你想要的功能 /* if(!ErrCode) * break; * * MyCardReset(); */ return ErrCode; // 这里是错误的,执行一次循环后就return了,之后的循环都不会执行的,这个return应该是在for循环外面的 } ... // do something ... }
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • lgccaa
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:18:418楼 得分:2
对不起,刚才想错了,楼主的return语句在for循环内是不会执行的,所以没有意义
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • Cyrosly
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:34:149楼 得分:4
C/C++ code
           
           
int main() { ... for ( int m = 0 ;m < 5 ;m ++ ) { ErrCode = Get_Curr_Inv(( byte * ) & inv_message.InvNumber); if ( ! ErrCode) goto $LEAVE; MyCardReset(); } $LEAVE: return ErrCode; ... return 0 ; }
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • yaoike
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:35:1610楼 得分:0
to lgccaa:
    谢谢你的详细指导,您说得很对,但是我有一点不是很赞同,return ErrCode;的确是在for()里面的,但是,的确如stardust20 兄台所说,永远不可能执行到。呵呵
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • cyj626
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 15:35:3711楼 得分:0
帮忙顶了
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • zhuwanglove
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 16:38:3012楼 得分:0
up
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • jia_xiaoxin
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 21:30:1413楼 得分:2
C/C++ code
           
           
void main() { ... // do something ... for ( int m = 0 ;m < 5 ;m ++ ) { if ( ! Get_Curr_Inv (( byte * ) & inv_message.InvNumber)) break ; MyCardReset(); } ... // do something ... }
修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天
  • mzlogin
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-11-06 21:35:3414楼 得分:2
按清晰点的写法,
main的返回类型应该是int
void仅限VC……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值