|
Стандартная часть таблицы символов (ASCII)⇐ ПредыдущаяСтр 13 из 13
Некоторые из вышеперечисленных символов имеют особый смысл. Так, например, символ с кодом 9 обозначает символ горизонтальной табуляции, символ с кодом 10 – символ перевода строки, символ с кодом 13 – символ возврата каретки. Дополнительная часть таблицы символов
В таблицах обозначение КС означает "код символа", а С – "символ". Приложение 2
Операции языка Си
Операции приведены в порядке убывания приоритета. Операции с разными приоритетами разделены чертой.
Приложение 3
Возможности препроцессора и его вызов
Препроцессор, как мы уже знаем, это программа предварительной обработки исходного текста программы перед этапом компиляции. Чаще всего препроцессор автоматически вызывается на этапе компиляции, если в исходном тексте обнаружена хотя бы одна его директива. Напомним, что признаком директивы препроцессора является символ # (обычно в начале строки). При необходимости продолжения директивы в следующей строке, текущую строку должен завершать символ '\'. Возможности препроцессора языка C: - лексемное замещение идентификаторов; - макрозамещение; - включение файлов исходного текста; - условная компиляция; - изменение нумерации строк и текущего имени файла.
Директивы лексемного замещения идентификаторов Директива определения значения идентификатора: #define ID строка В результате каждое вхождение в исходный текст элемента «ID» заменяется на значение элемента «строка»: #define L_bufs 2048 #define binary int #define WAIT fflush(stdin); getch() #define BEEP sound(800);\ delay(100);\ nosound() Лексемное замещение весьма удобно для сокращения записи повторяющихся фрагментов теста и определения символических констант: #define YES 1 #define NO 2 #define ESC 27 #define Enter 30 которые могут быть в дальнейшем использованы: if (x==ESC) break; BEEP; return(YES); Директива отмены #undef ID Далее по исходному тексту можно назначить новое значение такого идентификатора. Макрозамещение Макрозамещение - обобщение лексемного замещения посредством параметризации строки директивы define в виде: #define ID(параметр1,...) строка здесь между элементом «ID» и открывающей скобкой пробелы не допускаются. Такой вариант директивы define иногда называют макроопределением. Элемент «строка» обычно содержит параметры, которые будут заменены препроцессором фактическими аргументами так называемой макрокоманды, записываемой в формате: ID(аргумент1,...) Пример макроопределения и макрокоманд: #define P(X) printf("\n%s",X) ... char *x; P(x); // Использование макроопределения P(X) P(" НАЧАЛО ОПТИМИЗАЦИИ"); printf("\n%s",x); // Эквивалентные операторы printf("\n%s"," НАЧАЛО ОПТИМИЗАЦИИ"); В строке макроопределений идентификаторы параметров сложных выражений рекомендуется заключать в круглые скобки: #define МАХ(A,B) ((A)>(B)? (A):(B)) #define ABS(X) ((X)<0? –(X):(X)) Потребность в круглых скобках возникает при опасности искажения смысла вложенных выражений из-за действия правил приоритета операций. Пример искажения смысла операций: #define BP(X) X*X ... int x,y,z; x=BP(y+z); «x=y+z*y+z; «x=y+(z*y)+z; Очевидно, что ошибки будут и при следующих вариантах: #define BP(X) (X*X) #define BP(X) (X)*(X) Безопасный вариант: #define BP(X) ((X)*(X)) Иногда источником ошибок может быть символ «точка с запятой» в конце строки макроопределения: #define BP(X) ((X)*(X)); ... int x,y,z; x=BP(z)-BP(y); «y=((z)*(z)); -((y)*(y)); Макроопределение отменяется директивой undef. Идентификаторы макроопределений обычно составляют из прописных букв латинского алфавита. Это позволяет отличать макрокоманды от вызова функций. Макрокоманда внешне синтаксически эквивалентна операции вызова функции, но смысл их различен. Функция в программе имеется в одном экземпляре, но на ее вызов тратится время для подготовки параметров и передачи управления. Каждая макрокоманда замещается соответствующей частью макроопределения, но потерь на передачу управления нет. ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|