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.