В случае
while(*s++ != '\0') {}
инкремент выполняется как оператор постинкремента в самом операторе проверки условий. В этом случае изменение значения (приращение) является побочным эффектом после вычисления значения для оператора. Таким образом, после использования значения (для сравнения) s
увеличивается.
С другой стороны,
while(*s != '\0') {
s++;
}
инкремент выполняется как постинкремент внутри условного блока, который будет выполняться, только если условие TRUTHY. Как только условие оценивается как ложное, s
не увеличивается.