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?