Re:Dennis Ritchie’s first C compiler (c. 1972)
by colejohnson66 on Thursday March 11, 2021 @05:59PM
(#26430106)
Is there an explanation on why C’s operator precedence is weird? Such as: why does the bitwise AND have higher precedence than logical AND?
[ Parent
| on HN ]
Re:Dennis Ritchie’s first C compiler (c. 1972)
by compiler-guy on Friday March 12, 2021 @05:41PM
(#26441847)
There is, and it is amusing
“In retrospect it would have been better to go ahead and change the precedence of & to higher than ==, but it seemed safer just to split & and && without moving & past an existing operator. (After all, we had several hundred kilobytes of source code, and maybe 3 installations....)“
Re:Dennis Ritchie’s first C compiler (c. 1972)
by briantakita on Friday March 12, 2021 @03:27PM
(#26440481)
> why does the bitwise AND have higher precedence than logical AND?
Why is this precedence weird? Bitwise AND tends to be used to transform data while a logical AND tends to be used for control flow.
Re:Dennis Ritchie’s first C compiler (c. 1972)
by colejohnson66 on Friday March 12, 2021 @03:42PM
(#26440634)
I meant equals having a higher precedence than bitwise AND.
As in:
if (x & 2 == 2)
...is actually parsed as: if (x & (2 == 2))
...which isn’t intuitive.
Re:Dennis Ritchie’s first C compiler (c. 1972)
by compiler-guy on Friday March 12, 2021 @05:42PM
(#26441853)
See the above example from dmr himself