Nella maggior parte dei linguaggi di programmazione ( C # , JavaScript , Java ) l'ordine di precedenza delle operazioni ha che il confronto di uguaglianza viene PRIMA dei confronti bit a bit.
Questo significa che se hai una operazione bit e un confronto di uguaglianza sulla stessa linea (come in questo codice javascript):
if(2 & 15 === 2){
//do something
}
Si otterrà un risultato imprevisto (viene valutato a 0 in JavaScript). C # genera un errore se si tenta di farlo e non verrà compilato. Java, presumibilmente, genera anche un errore (non è stato attivato per il controllo).
Mi sembra che gli errori e la confusione in JavaScript possano essere rimossi completamente semplicemente mettendo gli operatori di uguaglianza su una precedenza inferiore rispetto agli operatori di Bitwise.
Non riesco a pensare a un'istanza in cui voglio avere sia un'operazione bit per bit che un'eguaglianza sulla stessa linea E voglio che l'uguaglianza sia valutata per prima.
Eppure ogni linguaggio di programmazione che ho controllato condivide lo stesso ordine di operazioni.
Qual è la ragione di questo? C'è un uso comune, legittimo, che mi manca che rende più semplice avere la precedenza come progettato?