En digraf (i C -sprogfamilien ) er en sekvens af to eller flere tegn, der af compileren fortolkes som et eller flere tegn. I modsætning til trigrafer udføres digrafsubstitution af præprocessoren efter leksikalsk analyse og kun hvis digrafen er et enkelt token.
Digrafer indføres i C90-sproget (ISO/IEC 9899:1990) med ændringsforslaget "Ændring 1". Ændring 1 blev godkendt i 1994, vedtaget i 1995 og inkluderet i C99-standarden (ISO/IEC 9899:1999) i 1999.
C -kompileren understøtter følgende fem digrafer , beskrevet i C99-standarden [1] .
Digraph | Tilsvarende symbol |
---|---|
<: | [ |
:> | ] |
<% | { |
%> | } |
%: | # |
C++ sprogstandarden kalder ikke kun digrafer for sekvenser af to tegn og anerkender [2] , at et sådant udtryk er forkert.
C++-sproget understøtter alle C-digrafer og trigrafer såvel som digraferne fra følgende tabel.
Digraph | Tilsvarende sekvens |
---|---|
%:%: | ## |
og | && |
bitor | | |
eller | || |
xor | ^ |
kompl | ~ |
bitand | & |
and_eq | &= |
or_eq | |= |
xor_eq | ^= |
ikke | ! |
ikke_eq | != |
De anførte digrafer, undtagen " %:%:", er tilgængelige på C-sproget som konstanter #define. Konstanterne er defineret i overskriftsfilen " <iso646.h>" inkluderet i ISO-standard C-tillægget "Normative addendum 1" fra 1995. For at opretholde kompatibilitet med C, definerer C++-standarden en tom overskriftsfil " <ciso646>".
Koden
%: definer citat ( x ) %: x citat ( x )efter substitution af digrafer bliver
# definer citat ( x ) # x citat ( x )og efter udskiftning af makroen bliver den
"x"Koden
%: definer S "%:" Sefter substitution af digrafer bliver
# define S "%:" Sog efter udskiftning af makroen bliver den
"%:"