texto son operadores los logicos igual hacer diferente datos cuales condicionales concatenación comparaciones comparacion caracteres cadenas c bitwise-operators operator-precedence

son - operadores de concatenación de cadenas de caracteres



Preferencia del operador(bit a bit ''y'' menor que ''=='') (3)

En el lenguaje de programación C, ¿por qué los operadores bit a bit (& y |) tienen una precedencia menor que el operador de igualdad (==)? No tiene sentido para mí.


No tengo una respuesta autorizada sobre por qué K & R eligió la precedencia que hicieron. Un ejemplo que tiene bastante sentido sería este:

if (x == 1 & y == 0) { /* ... */ }

Dado que este es el operador AND bit a bit, utiliza un modo de evaluación sin cortocircuito, como

if (x == 1 | y == 0) { /* ... */ }

utilice el operador OR sin cortocircuito. Esta es probablemente la razón por la que eligieron tener el grupo de precedencia de esta manera, pero estoy de acuerdo con usted en retrospectiva, no parece una buena idea.



Tienes que preguntarle a Brian Kernighan o Dennis Ritchie.
De este foro: http://bytes.com/topic/c/answers/167377-operator-precedence

El && y || los operadores se agregaron más tarde por su comportamiento de "cortocircuito". Dennis Ritchie admite en retrospectiva que la precedencia de los operadores bit a bit debería haber cambiado cuando se agregaron los operadores lógicos. Pero con varios cientos de kilobytes de código fuente C en existencia en ese punto y una base instalada de tres computadoras, Dennis pensó que sería un cambio demasiado grande en el lenguaje C ...

Entonces, ¿esa podría ser una razón? Supongo que, dado que hay varias capas de precendencia bit a bit (a diferencia de las comparaciones relacionales), es un error que existió desde ... para siempre ... y simplemente nunca fue corregido.