我是否更喜欢+
(加法)运算符或|
(或)运算符,如果两者都给出相同的结果?
我理解添加和逻辑OR是不同的东西。但它们有时会在某些宏中执行相同的操作,尤其是在使用字节和位时。在这种情况下我应该选择哪一个?
示例:
uint8_t Byte1 = 0x02; // 0000 0010
uint8_t Byte2 = 0x80; // 1000 0000
uint16_t Word1, Word2; // 0000 0010 1000 0000 = 640 = 0x0280
Word1 = (Byte1 << 8) + Byte2;
Word2 = (Byte1 << 8) | Byte2;
std::cout << "Word1 = " << Word1 << std::endl;
std::cout << "Word2 = " << Word2 << std::endl;
输出:
Word1 = 640
Word2 = 640
答案 0 :(得分:6)
在操作位模式时,逻辑运算符是合适的。在操作数值时,算术运算符是合适的。
答案 1 :(得分:1)
我会避免在同一个表达式中混合位操作和算术运算,所以我会写
Word1 = (Byte1 * 256) + Byte2;
但
Word2 = (Byte1 << 8) | Byte2;
可读性是唯一要担心的问题,因为一个好的优化器应该为两个表达式生成相同的精确代码。