si justement, c'est fait pour ça les trigraphes, pour les claviers sans ça.
y a ça comme caractère ayant des équivalents
# [ \ ] ^ { | } ~
c'est pour une sombre histoire : il manquait ces caractères dans le standard ISO xxx (le C a un alphabet de 96c si je me souviens bien). Bref avec les codepages, ça affichait n'importe quoi.
bref, il fallait bien ça pour que tout le monde puisse travailler. Ceci explique également l'introduction en C de macros et en C++ de nouveaux mots clefs pour certains opérateurs and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq, etc
voir le truc de Joel on Software sur l'unicode