Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Предельные значения н типы арифметических констант.




ЯЗЫК СИ

Глава 1. Базовые понятия языка

Словарь языка СИ

 

Язык СИ оперирует со следующим набором символов:

1) большие и маленькие буквы латинского алфавита A,B,C,..., Z, a,b,c,...,z

2) арабские цифры 0,1,2,...,9;

3) Специальные символы:

“ , { }    [  ] (   ) + -  / %  \           ;  ‘ . : ?  

< = > _ ! & * # ~ ^

4)  неизображаемые символы – пробел, табуляция, переход на новую строчку;

5) В комментариях, строках и символьных константах могут использоваться другие символы (например, русские буквы).

6) комбинации специальных символов образуют составленные символы:

/* - комментарий;

           /* это комментарий*/

В стандартном языке СИ комментарии запрещено вкладывать друг в друга.

/* текст-1 /* текст-2 */ текст-3 */   текст-3 не считается комментарием.

Лексема – единица текста программы, которая при компиляции воспринимается как единое целое и по смыслу не может быть разделена на более мелкие элементы.

В языке СИ 6 классов лексем: свободно выбираемые и используемые идентификаторы, служебные (ключевые) слова, константы, строки (строковые константы), операции (знаки операций), разделители (знаки пунктуации).

Идентификаторы.

Идентификатором переменной может быть любая последовательность латинских букв, цифр и знака подчеркивания, которое начинается с буквы или знака подчеркивания. Пробелы в идентификаторах не допускаются.

X     D8 d8 G_ALT        GAMMA128    _X .

Прописные и строчные буквы различаются.

Идентификаторы могут иметь любую длину, но компилятор учитывает не более 31 символа.

 В качестве идентификаторов нельзя использовать служебные (ключевые) слова и стандартные имена языка (sin, printf и т.д.).

Служебные (ключевые) слова.

Идентификаторы, зарезервированные в языке, т.е. такие, которые нельзя использовать в качестве свободно выбираемых программистом имен, называют служебными словами. Служебные слова определяют типы данных, классы памяти, квалификаторы типа, модификаторы, псевдопеременные и операторы. В стандарте языка определены следующие служебные слова:

 

auto break case char const continue default do
double else enum extern float for goto if
int long register return short signet sizeof Static
struct switch typedef union unsigned void volatile Wile

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

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

К спецификаторам типов относятся:

char  - символьный;

double - вещественный двойной точности с плавающей точкой;

enum - перечисляемый тип (перечисление) - определе­ние целочисленных констант, для каждой из ко­торых вводятся имя и значение;

float  - вещественный с плавающей точкой;

int        - целый;

long  - целый увеличенной длины (длинное целое);

short - целый уменьшенной длины (короткое целое);

struct - структура (структурный тип);

signed - знаковый, т.е. целое со знаком (старший бит считается знаковым);

union - объединение (объединяющий тип);

unsigned - беззнаковый, т.е. целое без знака (старший бит не считается знаковым);

void  - отсутствие значения;

typedef - вводит синоним обозначения типа (определяет сокращенное наименование для обозначения типа).

Квалификаторы типа:

const - квалификатор объекта, имеющего постоянное значение, т.е. доступного только для чтения;

volatile - квалификатор объекта, значение которого может измениться без явных указаний программиста.

Квалификаторы типа информируют компилятор о необходимости и (или) возможности особой обработки объектов в процессе оптимизации кода программы.

Для обозначения классов памяти используются:

auto  - автоматический;

extern - внешний; register - регистровый; static - статический.

Для построения операторов используются служебные слова:

break - выйти из цикла или переключателя;

continue - завершить текущую итерацию цикла (продолжить цикл, перейдя к следующей итерации);

do - выполнять (заголовок оператора цикла с постусловием);

for - для (заголовок оператора параметрического цикла);

goto - перейти (безусловный переход);

if     - если - обозначение условного оператора;

return - возврат (из функции);

switch - переключатель;

while - пока (заголовок цикла с предусловием или завершение цикла do).

К служебным словам также отнесены следующие идентификаторы:

default - определяет действия при отсутствии нужного варианта в операторе switch;

case  - определяет вариант в операторе switch;

else - входит в оператор if, определяя альтернативную ветвь;

sizeof - операция определения размера операнда (в байтах).

Добавим еще одно соглашение, обычно соблюдаемое авторами компиляторов и стандартных библиотек языка Си. Идентификаторы, начинающиеся с одного или двух символов подчеркивания "_", зарезервированы для использования в библиотеках и компиляторах. Поэтому такие идентификаторы не рекомендуется выбирать в качестве имен в прикладной программе на языке Си. Следующее соглашение относительно имен относится уже не к стандарту и не к реализациям, а отображает стиль оформления текста программы. Рекомендуется при программировании имена констант записывать целиком заглавными буквами.

Стандартные математические функции (файл math.h):

Функция Краткое описание
abs нахождение абсолютного значения выражения типа int
acos вычисление арккосинуса. Аргументы этой и других тригонометрических функций задаются в радианах
asin вычисление арксинуса
atan вычисление арктангенса х
atan2 вычисление арктангенса от у/х
cabs нахождение абсолютного значения комплексного числа
ceil нахождение наименьшего целого, большего или равного х
_clear87 получение значения и инициализация слова состояния сопроцессора и библиотеки арифметики с плавающей точкой
_control87 получение старого значения слова состояния для функций арифметики с плавающей точкой и установка нового состояния
cos вычисление косинуса
cosh вычисление гиперболического косинуса
exp вычисление экспоненты
fabs нахождение абсолютного значения типа double
floor нахождение наибольшего целого, меньшего или равного х
fmod нахождение остатка от деления х/у
_fpreset повторная инициализация пакета плавающей арифметики
frexp вычисляет для х вещественную мантиссу m и целое n так, что x=m*2n
hypot вычисление гипотенузы
labs нахождение абсолютного значения типа long
ldexp вычисление х*2e
log вычисление натурального логарифма
log10 вычисление логарифма по основанию 10
matherr управление реакцией на ошибки при выполнении функций математической библиотеки
modf разложение х на дробную и целую часть
pow вычисление х в степени у
sin вычисление синуса
sinh вычисление гиперболического синуса
sqrt нахождение квадратного корня
_status87 получение значения слова состояния с плавающей точкой
tan вычисление тангенса
tanh вычисление гиперболического тангенса

В библиотеке определен также ряд констант, таких как M_PI (число π), M_E (основание натурального логарифма e) и др.

 

Константы и строки

 

По определению, константа представляет значение, которое не может быть изменено. Синтаксис языка определяет пять типов констант: символы, константы перечисляемого типа, вещественные числа, целые числа и нулевой указатель ("null-указатель"). Все константы, кроме нулевого указателя, отнесены в языке Си к арифметическим.

Символы, или символьные константы. Для изображения отдельных знаков, имеющих индивидуальные внутренние коды, используются символьные константы. Каждая символьная константа - это лексема, которая состоит из изображения символа и ограничивающих апострофов. Например: 'А', 'а', 'В' ,'8', '0','+', ';' и т.д.

Внутри апострофов можно записать любой символ, изображаемый на дисплее или принтере в текстовом режиме. Однако в ЭВМ используются и коды, не имеющие графического представления на экране дисплея, клавиатуре или принтере. Примерами таких кодов служит код перехода курсора дисплея на новую строку или код возврата каретки (возврат курсора к началу текущей строки). Для изображения в программе соответствующих символьных констант используются комбинации из нескольких символов, имеющих графическое представление. Каждая такая комбинация начинается с символа ‘\’ (обратная косая черта - backslash). Такие наборы литер, начинающиеся с символа ‘\’, в литературе по языку Си называют управляющими последовательностями. Ниже приводится их список:

'\n'- перевод строки;

'\t' - горизонтальная табуляция;

'\r' - возврат каретки (курсора) к началу строки;

'\\' - обратная косая черта \;

'\n''- апостроф (одиночная кавычка);

'\'" - кавычка (символ двойной кавычки);

'\0'-нулевой символ;

'\а' - сигнал-звонок;

'\b'- возврат на одну позицию (на один символ);

'\f' - перевод (прогон) страницы;

'\v'- вертикальная табуляция;

'\?' - знак вопроса.

Целые константы.Синтаксисом языка определены целые константы: десятичные, шестнадцатеричные и восьмеричные. Основание определяется префиксом в записи константы. Для десятичных констант префикс не используется. Десятичные целые определены как последовательности десятичных цифр, начинающиеся не с нуля (если это не число нуль):

44 684 0 1024

Каждая конкретная реализация языка вводит свои ограничения на предельные значения констант. Например, компилятор Turbo С в отношении целых констант соответствует стандарту и допускает целые десятичные от 0 до 32767, а длинные целые  - от 0 до 2147483647.

Вещественные константы.Для представления веществен­ных (нецелых) чисел используются константы, представляемые в памяти ЭВМ в форме с плавающей точкой. Каждая вещественная константа состоит из следующих частей: целая часть (десятичная целая константа); десятичная точка; дробная часть (десятичная целая константа); признак показателя "е" или "E"; показатель десятичной степени (десятичная целая константа, возможно, со знаком). При записи констант с плавающей точкой могут опускаться целая или дробная часть (но не одновременно); десятичная точка или символ экспоненты с показателем степени (но не одновременно). Примеры констант с плавающей точкой:

44. 3.14159 44еО .314159Е1 0.0

Предельные значения н типы арифметических констант.

Символьных константs должны находиться в диапазоне от 0 до 255.

Для целых и вещественных констант каждая реализация компилятора с языка Си может определять свои ограничения.

В табл. 1.1 приведены пределы, исходя из которых компиляторы, реализованные на IBM-совместимых ПЭВМ, выбирают типы целых констант.










Последнее изменение этой страницы: 2018-05-10; просмотров: 210.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...