Почему «\?» Является 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, это также верно, хотя я не нашел это документированным.