Un digraf (în familia limbajului C ) este o secvență de două sau mai multe caractere interpretată de compilator ca unul sau mai multe caractere. Spre deosebire de trigrafe , înlocuirea digrafului de către preprocesor este efectuată după analiza lexicală și numai dacă digraful este un singur simbol.
Digrafele sunt introduse în limbajul C90 (ISO/IEC 9899:1990) prin amendamentul „Amendamentul unu”. Amendamentul unu a fost aprobat în 1994, adoptat în 1995 și inclus în standardul C99 (ISO/IEC 9899:1999) în 1999.
Compilatorul C acceptă următoarele cinci digrafe , descrise în standardul C99 [1] .
Digraf | Simbol echivalent |
---|---|
<: | [ |
:> | ] |
<% | { |
%> | } |
%: | # |
Standardul limbajului C++ numește digrafe nu numai secvențe de două caractere și recunoaște [2] că un astfel de termen este incorect.
Limbajul C++ acceptă toate digrafele și trigrafele C , precum și digrafele din tabelul următor.
Digraf | Secvență echivalentă |
---|---|
%:%: | ## |
și | && |
bitor | | |
sau | || |
xor | ^ |
compl | ~ |
bitand | & |
and_eq | &= |
sau_echiv | |= |
xor_eq | ^= |
nu | ! |
nu_echiv | != |
Digrafele enumerate, cu excepția " %:%:", sunt disponibile în limbajul C ca constante #define. Constantele sunt definite în fișierul antet „ <iso646.h>” inclus în suplimentul standard C ISO „Anexa normativă 1” din 1995. Pentru a menține compatibilitatea cu C, standardul C++ definește un fișier antet gol " <ciso646>".
Codul
%: definiți citatul ( x ) %: x citat ( x )după înlocuirea digrafelor devine
# definește citatul ( x ) # citatul x ( x )iar după înlocuirea macro-ului va deveni
"X"Codul
%: definiți S „%:” Sdupă înlocuirea digrafelor devine
# definește S „%:” Siar după înlocuirea macro-ului va deveni
"%:"