Pergunta

Eu aprendi hoje que existem dígrafos em C99 e C ++. O seguinte é um programa válido:

%:include <stdio.h>

%:ifndef BUFSIZE
 %:define BUFSIZE  512
%:endif

void copy(char d<::>, const char s<::>, int len)
<%
    while (len-- >= 0)
    <%
        d<:len:> = s<:len:>;
    %>
%>

A minha pergunta é: por que eles existem

Foi útil?

Solução

Dígrafos foram criados para programadores que não têm um teclado que apoiou o conjunto de caracteres ISO 646.

http://en.wikipedia.org/wiki/C_trigraph

Outras dicas

Eu acredito que a sua existência pode ser rastreada até ao possibilidade que em algum lugar, alguém está usando um compilador com um sistema operacional cujo conjunto de caracteres é tão arcaica que não tem necessariamente todos os personagens C ou C ++ necessidade de expressar toda a linguagem.

Além disso, contribui para boas entradas no IOCCC .

Eu acho que é porque alguns dos teclados neste planeta pode não ter teclas como '#' e '{'.

Os digrafos e trigraphs em C / C ++ provêm dos dias de conjuntos de caracteres de seis bits usadas pelo CDC6000 (60 bits), Univac 1108 (36 bits), DECSYSTEM 10 e 20 sistemas (36 bits) cada uma das quais utilizada uma proprietária conjunto de 64 caracteres não é compatível com o ASA X3.4-1963 (agora conhecido como ANSI X3.4-1963 "7-bit código de padrão nacional americano para Intercâmbio de Informações"). A última revisão é ANSI X3.4-1986. Uma vez que estes sistemas eram incapazes de representar todos os 96 pontos de código gráficas, muitos foram omitidos. Além disso, X3,4 foi coordenada com outros Institutos Nacionais Padrão (GBR, GER, ITA, etc) e não havia pontos de código em X3,4 que foram designados como caracteres de substituição nacionais - o exemplo mais óbvio é o # para a Britsh Pound símbolo (óbvio, porque o nome do caractere # é "sinal de libra" a partir dele do uso convencional no comércio dos Estados Unidos - antes da evolução do Twitter) eo '{' '}' também foram designados como caracteres de substituição nacionais. Assim dígrafos foram introduzidas para fornecer um mecanismo para os sistemas de computador incapazes de representar os personagens, e também para equipamento terminal de dados que atribuiu caracteres de substituição nacionais para os pontos de código conflitantes. Di / Tri-gráficos tornaram-se um artefato arcaico da história (um assunto não ensinou em ciência da computação nos dias de hoje) de computação - Um documento exaustivo sobre este assunto pode ser encontrada aqui: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep=rep1&type = pdf

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top