como o fork funciona com operadores lógicos

main()
{
    if (fork() || (fork() && fork()))
    printf("AA\n");
    else if (!fork())
    printf("BB\n");
    else
    printf("CC\n");
}

Eu executei o código a seguir e obtenho os resultados AA AA CC BB CC BB. Enquanto eu entendo como o fork funciona, não entendo o que ele faz com operadores lógicos. O professor da nossa turma quer que damos as respostas para esta lição de casa. Embora eu possa executar facilmente esse programa, gostaria de saber o que acontece exatamente. Alguém pode me explicar ou direcionar para um site o que acontece ao usar o fork com operadores lógicos.

Eu sou muito novo para c / c ++, então vá com calma comigo. obrigado

questionAnswers(1)

yourAnswerToTheQuestion