Operador de precedencia y operador ternario.

Tengo un problema en C.

<code>#include<stdio.h>
int main()
{
    int a = 10, b = 0, c = 7;
    if (a ? b : c == 0)
        printf("1");
    else if (c = c || a && b)
        printf("2");
    return 0;
}
</code>

Este código imprime 2, pero creo que a? B: c devuelve b = 0 y 0 == 0 devuelve 1. ¿Puedes explicar el código?

Respuestas a la pregunta(2)

Su respuesta a la pregunta