The C source code character set is a superset of the ISO 646-1983
Invariant Code Set. To enable programs to be represented in the
reduced set, trigraph sequences are defined
to represent those characters not in the reduced set. A trigraph is
a three character sequence that is replaced by a corresponding single
character. Table 7-2 gives the complete list of trigraph sequences
and their replacement characters.
Table 7-2 Trigraph Sequences and Replacement Characters 
Trigraph Sequence   | Replacement   | 
|---|
??=  | #  | 
??/  | \  | 
??'  | ^  | 
??(  | [  | 
??)  | ]  | 
??!  | |  | 
??<  | {  | 
??>  | }  | 
??-  | ~  | 
 
Any ? that does not begin one of the trigraphs listed
above is not changed.
-notrigraph
Option | 
  | 
In the ANSI extended (-Ae) mode, trigraph translation is automatically done. The
option, -notrigraph will disable automatic translation
of trigraph sequences.