I have a macro that looks something like this:
Foo(x) ((x - '!') & 070)
If I call the following code:
Foo('1') => 16
However, if I call the following code:
(('1' - '!') & 70) => 0
So my question is, what's going on here? Why does x & 070
compute to x
but x & 70
compute to 0?
My guess is that the extra 0 on the left is forcing 60 to take 2 bytes instead of 1. In that case, wouldn't the bitwise & be as follows?
0000 0000 0001 0000 '16
0000 0000 0100 0110 & '70
-------------------
0000 0000 0000 0000