Как определить ошибки компилятора и ошибки времени выполнения?
Разница между этими ошибками - во времени их обнаружения. Ошибки компиляции, что очевидно из названия, обнаруживаются во время компиляции. Ошибки выполнения можно обнаружить при запуске программы, если повезёт, и на тестовых данных выполнится ветка кода, содержащая ошибку.
Если есть что выполнять -- будут ошибки выполнения. Если выполнять нечего -- значит были ошибки компиляции (или линковки).