Ośmiokątna reprezentacja wewnątrz ciągu w C

W danym programie:

int main() {
  char *p = "\0777";
  printf("%d %d %d\n",p[0],p[1],p[2]);
  printf("--%c-- --%c-- --%c--\n",p[0],p[1],p[2]);
  return 0;  
}

Pokazuje wyjście jako:

63 55 0
-? - --7-- ----

Rozumiem, że konwertuje dwa pierwsze znaki po0 (077) odósemkowy na dziesiętny ale czy ktoś może mi wyjaśnić, dlaczego 2 postacie, dlaczego nie 1 lub 3 lub jakikolwiek inny?

Proszę wyjaśnić logikę tego.

questionAnswers(2)

yourAnswerToTheQuestion