一、 以下会有问题吗?
 1.   if (Condition)
     TRACE("ddddd");2.  
     BYTE      byHighByte = 0;
     BYTE      byLowByte = 0;
     WORD      wDDDDD = 0;     wDDDDD = byHighByte * 0x100 + byLowByte;

解决方案 »

  1.   

    最好这样写:#ifdef _DEBUG
    if (Condition)
         TRACE("ddddd");
    #endif
    否则release版可能会有不希望的结果
         BYTE      byHighByte = 0;
         BYTE      byLowByte = 0;
         WORD      wDDDDD = 0;     wDDDDD = (WORD)byHighByte * (WORD)0x100 + byLowByte;
      

  2.   

    1. 没有关系,因为TRACE("ddddd");语句在Release下是单个的;(即空语句),但推荐的做法是像上面的写法,这样可以避免不必要的开销。
    2. 也没有关系,因为按照C/C++的规范,立即数0X100是int,(int虽然平台相关,但至少是16bit的,与WORD相同),byHighByte*0X100是int,再加byLowByte后还是int,然后赋值的时候转型为WORD。推荐的做法如下:
    wDDDDD = ((WORD)byHighByte<<8)+byLowByte;
    注意:扩号一个也不能少,因为+的优先级大于<<。