C, C++ 陷阱

1. 警惕unsigned 造成的死循环

    unsigned int 与 0 的比较作为循环条件:  jb,jl

 

for( unsigned int uI = 10 ; uI >= 0 ; uI --){  /*死循环* / }
// 因为 ul >= 0 被汇编为:  cmp xx, xx;    jb xxx;   !!!

 

for( int i = 10; i >= 0 ; i --){ /* */ } 
// i >= 0 被汇编为: cmp xx, xx; jl xxx; !!!

 

 

同样,unsigned int 与 int 比较作为循环条件时,循环不执行:

 

int temp = -1;

for( unsigned int t = 10; t >= temp ; t -- ){ /* 循环不执行 */ }//  unsigned 与 int 比较时,都转换为 unsigned , 故汇编为: jb xxxx

 

2. 类中的被调函数

    当类中有 __stdcall 函数时,应声明为 static 类型,同时在类外定义时, 不要有 __stdcall 及 staic 出现,否则会出错( vc6.0 ).

 

3. C++ 中 typeid, 异常 的实现:

    // ?????

 

4.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值