Это утверждение:
if('z' - 'a' == 25)
не гарантируется равноценным образом. Он зависит от компилятора. Кроме того, не гарантируется оценка так же, как это:
#if 'z' - 'a' == 25
даже если оба препроцессора и компилятора запущены на одном компьютере. Почему это?