It is all a very Zen little corner of the C language.
In the olden days, terminals and keyboards often didn't support all the characters one might want for programming; so digraphs and trigraphs were introduced.
I'm surprised any modern compiler still supports them, but there it is.