In C++, qual è il fondamento logico di == e! = Che ha una precedenza più elevata rispetto a AND bit, XOR e OR bit?Qual è il motivo per cui == ha precedenza più alta di AND, XOR e OR bit a bit?
sembrerebbe a me più naturale avere operator==
e operator!=
vengono dopo operator&
, operator^
e operator|
. Mi piacerebbe capire la motivazione in modo da poter ricordare meglio l'ordine.
Ad esempio, vorrei che il seguente tipo di utilizzo potrebbe essere comune:
if (bitFields & value == 0) { // Incorrect test.
// Do Something.
}
Poiché il risultato == è 1 o 0, perché mai voglia di usarlo per operazioni bit per bit? Invece, quanto sopra deve essere scritto come:
if ((bitFields & value) == 0) { // Correct test.
// Do Something.
}
per ottenere il significato desiderato in cui l'AND bit a bit viene eseguito prima del confronto a zero.
La logica del C++ è che C usa le stesse regole di precedenza. È necessario modificare la domanda in C. – nosid
possibile duplicato di [C Operator precedence (bitwise e inferiore a ==)] (http://stackoverflow.com/questions/4685072/c-operator-precedence-bitwise-lower-than) – assylias