一、 以下会有问题吗?
1. if (Condition)
TRACE("ddddd");2.
BYTE byHighByte = 0;
BYTE byLowByte = 0;
WORD wDDDDD = 0; wDDDDD = byHighByte * 0x100 + byLowByte;
1. if (Condition)
TRACE("ddddd");2.
BYTE byHighByte = 0;
BYTE byLowByte = 0;
WORD wDDDDD = 0; wDDDDD = byHighByte * 0x100 + byLowByte;
if (Condition)
TRACE("ddddd");
#endif
否则release版可能会有不希望的结果
BYTE byHighByte = 0;
BYTE byLowByte = 0;
WORD wDDDDD = 0; wDDDDD = (WORD)byHighByte * (WORD)0x100 + byLowByte;
2. 也没有关系,因为按照C/C++的规范,立即数0X100是int,(int虽然平台相关,但至少是16bit的,与WORD相同),byHighByte*0X100是int,再加byLowByte后还是int,然后赋值的时候转型为WORD。推荐的做法如下:
wDDDDD = ((WORD)byHighByte<<8)+byLowByte;
注意:扩号一个也不能少,因为+的优先级大于<<。