Почему «\?» Является escape-последовательностью в C / C ++?

В C / C ++ нужно экранировать четыре специальных не алфавитных символа: одинарная кавычка\'двойная цитата\"обратная косая черта\\ и знак вопроса\?, Это очевидно, потому что они имеют особые значения.' для одногоchar, " для строковых литералов,\ для escape-последовательностей, но почему? один из них?

Я прочитал таблицу escape-последовательностей в учебнике сегодня, и я понял, что яникогда побег? раньше и никогда не сталкивался с проблемой, просто чтобы быть уверенным, я тестировал его под gcc:

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

и версия C ++:

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

Вывод обеих программ:question mark ? and escaped ?

Итак, у меня есть два вопроса:

Почему\? один из символов escape-последовательности?Почему не сбежать? работает отлично, нет даже предупреждения.

Прежде чем я собираюсь задать этот вопрос, я нашел ответ сам, так как я не нашел дубликат в SO, я решил опубликовать его в стиле Q & A.

Более интересным фактом является то, что сбежал\? можно использовать так же, как? и на некоторых других языках я тестировал в Lua / Ruby, это также верно, хотя я не нашел это документированным.

Ответы на вопрос(1)

Ваш ответ на вопрос