Da es keine Klammern gibt, regelt die Operator-Precedence in welcher Reihenfolge das ausgewertet wird. Und da der ==-Operator eine höhere Präzedenz hat (man kann auch sagen: bindet stärker) wird zuerst der Vergleich B == C ausgewertet. Das Ergebnis davon wird dann an A zugewiesen. Und das Ergebnis der Zuweisung ist dann das, was das if auswertet. Das Ergebnis des ==-Operators ist übrigens ein Integer, der entweder 0 (nicht gleich) oder 1 (gleich) ist. Und daher auch die Warnung: dem Pointer A wird ein Integer (Ergebnis von B == C) zugewiesen.
Jetzt ist der Groschen gefallen!!
Vielen Dank für die Hilfe und abschließende Erklärung!

Grüße,
V:X