Die Klammer tut nichts zur Sache...
Bei der verschachtelten Operation wird innen auf int-Ebene ausgewertet. Die genaue Semantik kannst du der C-Spezifikation entnehmen.
Die Zeile ist NICHT gleichbedeutend mit der Aufspaltung in einzelne Zuweisungen!
Wenn du es in einer Zeile haben willst, geht
bar = ((uint8_t) ~foo) >> 4;
Lesezeichen