¿Podría alguien explicar la razón, por qué en un grupo de los idiomas más populares (vea la nota a continuación) los operadores de comparación (==,! =, & lt ;, & gt ;, < =, > =) tienen mayor prioridad que bit a bit operadores (& amp ;, |, ^, ~)?
No creo que haya encontrado un uso donde esta precedencia sea natural. Siempre son cosas como:
if( (x & MASK) == CORRECT ) ... // Chosen bits are in correct setting, rest unimportant
if( (x ^ x_prev) == SET ) // only, and exactly SET bit changed
if( (x & REQUIRED) < REQUIRED ) // Not all conditions satisfied
Los casos en los que usaría:
flags = ( x == 6 | 2 ); // set bit 0 when x is 6, bit 1 always.
están cerca de ser inexistentes.
¿Cuál fue la motivación de los diseñadores de idiomas para decidir sobre la precedencia de los operadores?
Por ejemplo, todos excepto SQL en los 12 idiomas principales son así en la lista de popularidad del lenguaje de programación en langpop.com : C, Java, C ++, PHP, JavaScript, Python, C #, Perl, SQL, Ruby, Shell, Visual Basic.