请按任意键继续...

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  21 随笔 :: 0 文章 :: 2 评论 :: 0 Trackbacks
   今晚写个了判断一个数的集合是否是最大堆函数时,在使用宏时碰到了一个小启示:
    #define R(i) (i << 1 + 1)
   上面宏定义本意是求i的右孩子下标的,可是当i = 3时,R(i)却是12.
   困顿了一两分钟,大悟,改为:
    #define R(i) ((i << 1) +1)
   原因是<<的优先级低于+。本来编译器有warning的,但自信那是无关重要的警告。
所以吃了个小亏。
posted on 2012-11-21 22:19 星哥 阅读(143) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理