Expressions “j = ++(i | i); and j = ++(i & i); should be a lvalue error?
You are right that it should not compile, and on most compilers, it does not compile. (Please specify exactly which compiler/version is NOT giving you a compiler error) I can only hypothesize that the compiler knows the identities that (i | i) == i and (i & i) == i and is using those identities … Read more