Диграфы и триграфы в c / c ++ происходят из дней шестибитных наборов символов, используемых системами CDC6000 (60 бит), Univac 1108 (36 бит), DECsystem 10 и 20 (36 бит), каждая из которых использовала проприетарный 64-символьный набор, несовместимый с ASA X3.4-1963 (теперь известный как ANSI X3.4-1963 "7-битный американский национальный стандартный код для обмена информацией"). Последняя версия - ANSI X3.4-1986. Поскольку эти системы были неспособны представить все 96 графических кодовых точек, многие из них были опущены. Кроме того, X3.4 был скоординирован с другими национальными стандартными институтами (GBR, GER, ITA и т. Д.), И в X3.4 были кодовые точки, которые были обозначены как национальные замещающие символы - наиболее очевидным примером является # для британского фунта символ (очевидно, потому что имя символа # является «знаком фунта» от его обычного использования в торговле США - до развития Twitter), и символ {{''} 'также был обозначен как национальные символы замены. Таким образом, орграфы были введены для обеспечения механизма для тех компьютерных систем, которые не способны представлять символы, а также для оконечного оборудования данных, которое назначало национальные символы замены для конфликтующих кодовых точек. Ди-триграфы стали архаичным артефактом истории вычислений (предмет, который в наши дни не преподается в информатике). Подробную статью по этому вопросу можно найти здесь: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep=rep1&type=pdf