No, you don't. The bitwise shifting operator has a higher precedence than the bitwise or does. You may test it with this programm:
#include <stdio.h> int main(int agrc, char** argv) { int iTest = 0x42 << 7 | 0x02; int iTest1 = (0x42 << 7) | 0x02; int iTest2 = 0x42 << (7 | 0x02); printf("iTest: %d; iTest1: %d, iTest2: %d\n", iTest, iTest1, iTest2); return 0; } I get the following output(compiled with gcc 3.3.5): iTest: 8450; iTest1: 8450, iTest2: 8448 Greetings, Johannes