Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
это то что у меня есть в электронном виде.docx
Скачиваний:
1
Добавлен:
23.04.2019
Размер:
141.72 Кб
Скачать

2.6 Комментарии

Синтаксис: /* символы */

"Комментарий" это последовательность символов, которая рассматривается компилятором как разделительный символ, но игнорируется им. "Символы" в комментарии могут включать в себя любые комбинации символов представительной таблицы, включая символ новой строки, кроме ограничителя "конец комментария" (*/). Комментарии могут занимать более одной строки, но не могут быть вложенными.

Комментарии могут появляться везде, где допустимо появление разделительных символов. Комментарий рассматривается компилятором как единичный разделительный символ, поэтому нельзя включать комментарии с лексемами. Однако, из-за того, что компилятор игнорирует символы комментария, в его текст можно включать ключевые слова без появления ошибок.

Для подавления компиляции большой части программы или сегмента программы содержащей комментарии, следует заключить нужную часть программы в скобки директив предпроцессора #if и #endif, а не выделять эту часть программы комментариями (см. "Условная компиляция").

Примеры

Приведем ряд примеров, иллюстрирующих комментарии:

/* Comments can separate and document

lines of programm. */

/* Comments can contain keywords such as for

and while. */

/*****************************************

Comments can occupy several lines.

*****************************************/

Комментарии не могут содержать вложенные комментарии. Следующий пример вызовет появление ошибки:

/* You cannot /* nest */ comments */

Ошибка происходит из-за того, что компилятор распознает первое появление */ после слова nest как конец комментария. Он пытается обработать остальной текст и не может этого сделать, поэтому выдает сообщение об ошибке.

2.7 Лексемы

В исходном тексте программы на языке С компилятор распознает основные элементы из групп символов, называемые "лексемами". Лексема это текст исходной программы, который компилятор не анализирует на входящие в него компоненты.

Например, в следующем фрагменте программы слово elsewhere использовано в качестве имени функции. Хотя else и является ключевым словом в С, конфликта между лексемой имени функции и лексемой ключевого слова С не не происходит.

main()

{

int i = 0;

if (i)

elsewhere();

}

Однако, если ввести elsewhere как else where, с пробелом между словами else и where, то в предыдущем примере компилятор выдаст диагностическое сообщение, суть которого состоит в отсутствии точки с запятой после ключевого слова else.

Примерами лексем служат могут служить описанные в данной главе операторы, константы, идентификаторы и ключевые слова. Также являются лексемами такие символы пунктуации, как прямоугольные ([]), фигурные ({}) и угловые скобки (<>), двоеточие и запятая.

Лексемы отделяются разделительными символами и другими лексемами, например, операторами и символами пунктуации. Для предотвращения разбивки компилятором элементов на две или несколько лексем, в идентификаторах, многосимвольных операторах и ключевых словах запрещено использование разделительных символов.

Когда компилятор интерпретирует лексемы, он пытается включить в отдельную лексему как можно больше символов до перехода к следующей лексеме. Из-за этой особенности компилятор может неверно интерпретировать лексемы, если они не выделяются разделительными символами.

Пример

Рассмотрим следующее выражение:

i+++j