003 - Trigraph
The code snippet above performs short-circuit evaluation:
HandleError() will only happen if !ErrorHasOccured() evaluates to TRUE.
However, instead of ||, which is normally used for this, the snippet above
uses ??!??! which most C compilers still allow.
Explanation
Similar to spoken languages, some programming languages support digraphs and trigraphs - groups of two or three characters used to symbolise one character.
Before the current QWERTY keyboard layout was widespread, some keyboards didn’t
have special characters such as |. To make things easier for programmers,
the C preprocessor made is so that typing ??! is the same as typing |.
Similar rules exist for other characters which were less common on keyboards at
the time, such as #, ~ and ^.
While largely irrelevant nowadays, many C compilers still support this. This
makes it possible to replace || with ??!??! anywhere in your C code.
Needless to say, using ??!??! instead of || in code is both unnecessary and
something that few are familiar with, making this a bad practice for production
code.