in C (e altre lingue probabilmente) un singolo |
o &
è un confronto bit per bit.
Il doppio ||
o &&
è un confronto logico.
Edit: Assicurarsi di leggere il commento di Mehrdad sotto per quanto riguarda "senza corto circuito"
In pratica, dal momento che true
spesso è equivalente a 1
e false
spesso è equivalente a 0
, i confronti bit per bit a volte può essere valido e restituisce esattamente lo stesso risultato.
C'era una volta un componente software mission-critical su cui è stato eseguito un analizzatore di codice statico e si faceva notare che veniva utilizzato un confronto bit a bit dove avrebbe dovuto essere un confronto logico. Poiché è stato scritto in C e grazie alla disposizione dei confronti logici, il software ha funzionato bene con entrambi. Esempio:
if ((altitide > 10000) & (knots > 100))
...
quale lingua? –
A quale lingua ti riferisci? –
C# e javascript –