У меня есть аргумент с моим лектором курса компиляции:
В тесте, который был частью этого курса, некоторые вопросы касались сегментов кода идентификации и классификации, написанных в C. Каждый из этих вопросов должен указывать, на какой стадии будет раскрываться ошибка:
a. Лексический анализ
b. Syntheti c анализ
c. Семанти c анализ
д. Время работы (при определенных условиях)
e. Это не ошибка.
Один из вопросов в этом стиле был следующим:
Команда переключения, в которой нет компонента по умолчанию. Например:
switch (key){
case 1: .........
case 2: .........
case 3:..........
}
Теперь, в официальном тестовом решении, в вышеприведенном случае верным был только параметр e . Тем не менее, я утверждаю, что вариант d не обязательно может быть отклонен сразу, и что это также верно. В качестве аргумента я показал (после теста) двум преподавателям следующие два примера:
1) ![enter image description here](https://i.stack.imgur.com/eo9IW.png)
(от: https://cwe.mitre.org/data/definitions/478.html)
2) ![enter image description here](https://i.stack.imgur.com/k5dkz.png)
(от: Должны ли операторы switch всегда содержать предложение по умолчанию? )
Однако он еще не убежден, что в этом случае рассматривается вариант ошибки времени выполнения. Он сказал, что из-за вопросов, упомянутых выше, это только для команд или фрагментов, которые показаны непосредственно в вопросах, и потому что код не имеет намерения кода, поэтому в этом случае они фактически спрашивают, является ли эта структура сама по себе недействительна, поэтому вам здесь отказано в ошибке времени выполнения (лично я не вижу здесь никакого противоречия ...).
Я был бы рад, если бы вы поделились своим мнением по этому вопросу.