Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рацеев С.М. Программирование на языке Си.pdf
Скачиваний:
369
Добавлен:
23.03.2016
Размер:
1.65 Mб
Скачать

апосле таких строчек программы

x= 1;

y= x++;

переменная y будет иметь значение 1. Переменная же x в обоих случаях примет значение 2.

Пустой оператор. Данный оператор состоит из точки с запятой (;) и используется для обозначения пустого тела управляющего оператора.

Комментарии в тексте программ. Комментарий – набор символов, которые игнорируются компилятором. Комментарий может помещаться в любом месте программы и занимать одну или несколько строк. Внутри набора символов, представляющих комментарий, не должно быть символов /* и */, представляющих соответственно начало и конец комментария. Пример комментария:

/* Текст комментария */

1.3. Символические константы

Константы в языке Си могут быть строковыми, символьными, целыми и вещественными. Чтобы определить константу, необходимо сообщить компилятору ее имя и значение. Для ее определения используется директива #define, имеющая следующий синтаксис:

#define имя значение

После директивы точка с запятой не пишется. Перед тем как начать генерировать объектные (машинные) коды, компилятор подставляет вместо каждого встреченного им имени константы ее значение.

Для определения числовой константы необходимо задать ее имя и значение. Например, пусть имеется директива

#define PI 3.14

Тогда препроцессор перед трансляцией программы заменит в ней все имена PI на числовое значение 3.14:

/* исходная программа */

/* после препроцессирования */

#include <stdio.h>

 

17

#define PI 3.14

 

int main( )

int main( )

{

{

double x = 2*PI;

double x = 2*3.14;

printf("%f\n", PI*PI);

printf("%f\n", 3.14*3.14);

return 0;

return 0;

}

}

При определении константы ее тип не указывается. Компилятор сам определит, к какому типу относится объявленная константа, по ее значению. В приведенном выше примере константа PI будет определена как действительное число с плавающей точкой, так как число 3.14 является действительным.

Если объявить

#define N 100

то константа N будет отнесена к целому типу, так как число 100 является целым.

Чтобы объявленная константа была отнесена к типу float, необходимо, чтобы число имело хотя бы одну цифру после запятой, например

#define X 2.0

Если объявляется константа символьного типа, то она должна быть заключена в одинарные кавычки:

#define LETTER ‘a’

Если же в качестве константы нужно объявить строку, то ее необходимо заключить в двойные кавычки:

#define SENTENCE “This is a string constant”

Для запоминания строковой константы используется по одному байту на каждый символ и автоматически добавляется к ней признак конца строки – символ ‘\0’, который в таблице символов ASCII имеет нулевой код. Данный символ является ограничителем строки.

Ниже приведена таблица с описанием символических констант.

18

Константа

Формат

 

Примеры

Символьная

Символ, заключенный в одинар-

‘A’, ‘5’

 

ные кавычки.

 

 

Строковая

Последовательность

символов,

“Это строка”

 

заключенные в двойные кавычки.

 

Целая

Десятичный: последовательность

123, -50,

 

цифр (со знаком или без), не

1234567L

 

начинающаяся с 0. Такие кон-

 

 

станты имеют тип int. Если число

 

 

длинное, то в конце добавляется l

 

 

или L. Такая константа имеет тип

 

 

long.

 

 

 

Восьмеричный: последователь-

015, 0123

 

ность цифр (0т 0 до 7), начинаю-

 

 

щаяся с 0.

 

 

 

Шестнадцатеричный:

последова-

0x7B, 0xAB

 

тельность (цифры от 0 до 9 и бук-

 

 

вы A, B, C, D, E, F), начинающая-

 

 

ся с 0x или 0X.

 

 

Действительная

Десятичный: последовательность

10.0, -1.2

 

цифр, содержащая точку.

 

 

Экспоненциальный.

 

10e5, 1.2e+10

Заметим, что оператор sizeof() можно также применять для констант, например:

#include <stdio.h> #define EXP 2.711828 #define GREETING "Hi" int main( )

{

printf("%d\n", sizeof(EXP)); printf("%d\n", sizeof(GREETING)); return 0;

}

19

При этом размер строковой константы GREETING будет иметь значение 3, так как учитывается символ ‘\0’. Тот же результат получится и после инструкции

printf("%d\n", sizeof(“Hi”));

1.4. Типизированные константы

Типизированная константа – переменная, которая находится в специальной области памяти и значение которой нельзя изменить. Значение типизированной константы необходимо определить при ее объявлении. Такая константа объявляется как и обычная переменная, только перед ее типом ставится ключевое слово const и сразу инициализируется ее значение:

const тип_константы имя_константы = значение_константы; Например,

const int N =100;

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

1.5. Несколько слов о функции main()

Язык Си является процедурным языком. Любая программа, написанная на данном языке, состоит из одной или более функций, среди которых обязательно должна присутствовать функция main(), так как программа при запуске всегда начинается с этой функции.

Заметим, что функция main() возвращает тип int. Это прописано в стандарте C99 (октябрь, 1999 год): "Функция, вызывающая запуск программы, называется main. Реализация не объявляет прототип для этой функции. Он должен быть определен путем возврата целого типа int… Если возвращаемый тип не совместим с типом int, состояние завершения, возвращаемое в хост-среду, является неспецифицированным". То есть если возвращаемый тип функции main() отличен от типа int, то компилятор волен возвращать в хостсреду (в основном, это операционная система) любое состояние.

20

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

21