Mi sono imbattuto in un avvertimento Cppcheck (inconcludente), che ho erroneamente utilizzato &
anziché &&
:
/// @param code identifies the command. Only the lower 16 bits of are being processed
int encodeCmdState(bool finished, int code, bool errorneous)
{
return
(finished & 1) |
((code & 0xffff)<<1) |
((err & 1)<< 17);
}
Non sono sicuro che questo codice (stile) torni indietro nei momenti in cui bool
non era disponibile in C. La mia prima idea sarebbe semplicemente di rimuovere la & 1
normalizzazione dalle parti bool
. Ma voglio essere sicuro, quindi ...
Sta spostando bool
valori "portable" e "safe"? O, più in generale:
La implicita bool
-to- int
conversazione nelle espressioni aritmetiche sempre normalizza valori?