Вероятно, это было оптимизировано компилятором. Поскольку ни if, ни else что-то не делают, оно было удалено, и isdigit
в итоге не вызывается. Обязательно
#include <ctype.h>
Ошибка сегментации возникает, вероятно, из-за того, что вы передаете (не очень маленькое) число, когда ожидался символ. Когда вы удаляете операторы printf и компилятор оптимизирует его, вызов не будет происходить, поэтому он не завершится с ошибкой.
Обратите внимание, что заголовки могут быть фактически опущены, так как программа будет связана со стандартной библиотекой C по умолчанию, поэтому она работает. Но это не очень хорошая идея, и вы должны увидеть хотя бы предупреждение.