Trigraphs
O conjunto de caracteres da fonte dos programas de código-fonte c está contido em um conjunto de caracteres ASCII de 7 bits, mas é um superconjunto da ISO 646-1983 invariável conjunto de códigos.Seqüências de trigraph permitem que os programas em c ser escrito usando apenas a ISO (International Standards Organization) invariável código definido.Trigraphs são seqüências de três caracteres (introduzidos por dois pontos de interrogação consecutivos) que o compilador substitui com seus caracteres de pontuação correspondente.Você pode usar o trigraphs em arquivos de código-fonte c com um conjunto de caracteres que não contenha convenientes representações gráficas para alguns caracteres de pontuação.
A tabela a seguir mostra as seqüências de trigraph de nove.Todas as ocorrências em um arquivo de origem, os caracteres de pontuação na primeira coluna são substituídas pelo caractere correspondente na segunda coluna.
Seqüências de trigraph
Trigraph |
Caractere de pontuação |
---|---|
??= |
# |
??( |
[ |
??/ |
\ |
??) |
] |
??' |
^ |
??< |
{ |
??! |
| |
??> |
} |
??- |
~ |
Um trigraph sempre é tratado como um caractere de fonte única.A conversão de trigraphs ocorre no primeiro fase de conversão, antes do reconhecimento de caracteres de escape em seqüência de caracteres literais e constantes de caractere.Apenas nove trigraphs mostrados na tabela acima são reconhecidos.Todos os outros caracteres, seqüências são deixadas untranslated.
A seqüência de escape de caractere, \?, impede a má interpretação das seqüências de caracteres de tipo trigraph.(Para obter informações sobre seqüências de escape, consulte Seqüências de Escape.) Por exemplo, se você tentar imprimir a seqüência de caracteres What??! com esse printf instrução
printf( "What??!\n" );
a seqüência de caracteres impressa é What| porque ??! é uma seqüência de trigraph que é substituída pelo |caractere.Escreva a instrução da seguinte forma para imprimir corretamente a seqüência de caracteres:
printf( "What?\?!\n" );
Neste printf instrução, impede que um caractere de escape de barra invertida de frente para o segundo ponto de interrogação a má interpretação de ??! como um trigraph.