Domanda

Ho imparato oggi che ci sono digraph in C99 e C ++. Il seguente è un programma valido:

%: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:>;
    %>
%>

La mia domanda è: perché esistono?

È stato utile?

Soluzione

Digraphs sono stati creati per programmatori che non avevano una tastiera che supportava il set di caratteri ISO 646.

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

Altri suggerimenti

Credo che la loro esistenza possa essere ricondotta alla possibilità che da qualche parte qualcuno sta usando un compilatore con un sistema operativo il cui set di caratteri è così arcaico da non avere necessariamente tutti i personaggi che C o C ++ devono esprimere l'intera lingua.

Inoltre, rappresenta una buona voce nel IOCCC .

Penso che sia perché alcune tastiere su questo pianeta potrebbero non avere tasti come '#' e '{'.

I digrafi e le trigrafi in c / c ++ provengono dai giorni dei set di caratteri a sei bit utilizzati dai sistemi CDC6000 (60 bit), Univac 1108 (36 bit), DECsystem 10 e 20 (36 bit) ognuno dei quali utilizzava un 64 set di caratteri proprietario non compatibile con ASA X3.4-1963 (ora noto come ANSI X3.4-1963 "American Standard Standard Code a 7 bit per lo scambio di informazioni"). L'ultima revisione è ANSI X3.4-1986. Poiché questi sistemi non erano in grado di rappresentare tutti i 96 punti di codice grafico, molti sono stati omessi. Inoltre, X3.4 è stato coordinato con altri National Standard Institutes (GBR, GER, ITA, ecc.) E c'erano punti di codice in X3.4 che sono stati designati come caratteri sostitutivi nazionali - l'esempio più ovvio è il # per la Britsh Pound Il simbolo (ovvio perché il nome del carattere # è "cancelletto" dal suo uso convenzionale nel commercio statunitense - prima dell'evoluzione di Twitter) e il "{" "}" sono stati designati anche come caratteri sostitutivi nazionali. Così furono introdotti i digraph per fornire un meccanismo a quei sistemi di computer incapaci di rappresentare i caratteri, e anche per le apparecchiature terminali di dati che assegnavano caratteri di sostituzione nazionali ai punti di codice in conflitto. Di / Tri-graphs sono diventati un artefatto arcaico della storia informatica (una materia non insegnata in informatica al giorno d'oggi) - Un documento esauriente su questo argomento può essere trovato qui: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep = rep1 & amp; type = pdf

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top