Por que é “\?” Uma seqüência de escape em C / C ++?

Existem quatro caracteres especiais não alfabéticos que precisam ser escapados em C / C ++: a aspa simples\'aspas duplas\", a barra invertida\\ e o ponto de interrogação\?. É aparentemente porque eles têm significados especiais.' para solteirochar, " para literais de string,\ para seqüências de escape, mas por que? um deles?

Eu li a tabela de seqüências de escape em um livro hoje e percebi que euNunca escapar? antes e nunca encontrei um problema com ele, só para ter certeza, eu testei no gcc:

#include <stdio.h>
int main(void)
{
    printf("question mark ? and escaped \?\n");
    return 0;
}

e a versão C ++:

#include <iostream>
int main(void)
{
    std::cout << "question mark ? and escaped \?" << std::endl;
    return 0;
}

Ambos os programas de saída:question mark ? and escaped ?

Então eu tenho duas perguntas:

Por que é\? um dos personagens da seqüência de escape?Por que não escapar? funciona bem, não há nem mesmo um aviso.

Antes de fazer esta pergunta, eu mesmo encontrei a resposta, pois não encontrei uma duplicata no SO, decidi publicá-la no estilo Q & A.

O fato mais interessante é que os fugitivos\? pode ser usado da mesma? em algumas outras linguagens também, eu testei em Lua / Ruby, também é verdade mesmo que eu não ache isso documentado.

questionAnswers(1)

yourAnswerToTheQuestion