Может ли семантическая ошибка обнаруживаться компилятором или нет? Если нет, то когда обнаруживаются ошибки?
Насколько я знаю, семантические ошибки - это те ошибки, которые возникают в результате выражений с участием операторов с неправильным числом / типом операндов.
Например:
n3=n1*n2;//n1 is integer, n2 is a string, n3 is an integer
Вышеприведенное утверждение семантически неверно.
Но, читая «С Primer Plus» Стивена Прата, я нашел следующее утверждение
Компилятор не обнаруживает семантических ошибок, потому что они не нарушают правила Си. У компилятора нет способа предугадать ваши истинные намерения. Это оставляет вам возможность найти ошибки такого рода. Один из способов - сравнить, что программа делает с тем, что вы ожидали.
Если не компилятор, кто обнаружит эти ошибки?
Я что-то упустил?