ANSI 3.8.1 Whether the value of a single-character character constant in a constant expression that controls conditional inclusion matches the value of the same character constant in the execution character set. Whether such a character constant can have a negative value
The character set used in preprocessor statements is the same as the execution character set. The preprocessor recognizes negative character values.