C keywords are predefined by the C compiler and they are lowercase in C89. Since there are only 32, why can’t one define them as case-insensitive? Because it makes the tokenizer simpler . This was a strong reason way back when memory and program size was measured in kbytes.