上午写程序的时候才留意这个问题: cStr[0] = (ucErrCode >> 4) & 0x0f + 0x30; cStr[1] = ucErrCode & 0x0f + 0x30; 结果发现cStr里的值仍然是ucErrCode的高4位和低4位的阿拉伯数字(十六进制的ucErrCode中高4位和低4位只有数字,没有A~F), 而不是预想的字符型数字. 后来才发现是由于 & 的优先级比 + 低.
为什么位与"&"的优先级比"+"低呢? 按照习惯应该是比"+"高啊.当然这只是我的思维习惯(现在看来是坏的习惯). 不过我还是想问下, C标准制定者在定义"&" 和 "+" 的优先级顺序时是基于什么考虑呢? |