- •Введение
- •Достоинства и недостатки языка c
- •Типы данных в с
- •Модификаторы
- •Константы
- •Арифметические операции
- •Логические операции
- •Оператор присваивания
- •Организация множественных выражений
- •Комбинированные операции
- •Локальные и глобальные объекты
- •Модификатор extern
- •Статические и динамические объекты
- •Регистровые переменные
- •Описание неизменяемых объектов
- •Указатели
- •Явное преобразование типа
- •Оператор if
- •Операторы циклов Оператор while
- •Оператор do ... While
- •Оператор for
- •Оператор switch (переключатель)
- •Операторы передачи управления
- •Прототипы функций
- •Передача данных в функцию
- •Структуры и определения типов пользователя
- •Битовые поля
- •Объединения
- •Псевдофункция sizeof
- •Основные директивы препроцессора
- •Основные директивы условной компиляции
- •Дополнительные данные по Turbo-c
- •Организация памяти на машинах класса pc. Виды указателей
- •Работа с указателями на функцию
- •Основные регистры общего назначения процессора
- •Модели памяти
- •Использование стека
- •Организация прерываний в программе. Модификатор volatile
- •Порядок передачи данных в функцию. Модификатор pascal
- •Передача данных в программу. Функция main
- •Разбор типовых ошибок и недочетов при программировании
- •Некоторые функции библиотеки Turbo-c
- •Функции работы с оперативной памятью эвм
- •Функции работы с клавиатурой
- •Работа с дисплеем в символьном режиме
- •Работа с дисплеем в графическом режиме
- •Функции работы с дисками
- •Функции работы с временными интервалами и звуком
- •Функции преобразования данных
- •Функции работы со строками
- •Математические функции
- •Функции работы с файлами и каталогами
- •Функции работы со временем и датой
- •Функции процессов
- •Функции работы с портами машины
- •Интерфейс с дос
- •Задачи на практические занятия
- •Литература
- •Оглавление
Оператор присваивания
Общая форма записи:
<объект>=<выражение>;
Вычисляется выражение в правой части, преобразуется к типу левой части и заносится по адресу объекта в левой части.
Примеры:
1.
main()
{
int i,j,k;
i=12; j=13;
k=i*j;
printf("\n%d * %d = %d",i,j,k); /* выведено 12 * 13 = 156 */
}
2.
main()
{
int i,j,k;
i=2;
j=i++; /* j=i i=i+1 */
k=++i+3; /* i=i+1 k=i+3 */
printf("\ni=%d j=%d k=%d",i,j,k); /* i=4 j=2 k=7 */
}
3.
main()
{
int i;
i=12*12;
printf("\nАдрес i=%p Значение i=%d",&i,i);
}
Примечание: в последнем примере вместо формата p можно использовать формат, например, d.
Организация множественных выражений
Для организации множественных выражений между выражениями, заключенными в круглые скобки, ставится запятая. Значение этого выражения является последний результат. При этом выражения вычисляются слева направо. Например:
c=(h=12, b=h*2);
При этом вначале переменной h присвоится значение 12, далее вычислится значение b как h, умноженное на 2, и значение c станет равным b.
Комбинированные операции
С позволяет использовать некоторые сокращения при написании выражений, содержащих операции. Так, любое выражение вида
<объект>=<объект><операция><выражение>;
может быть заменено на
<объект><операция>=<выражение>;
Например:
a=a+b; заменяется на a+=b;
a=a-b; заменяется на a-=b;
a=a*b; заменяется на a*=b;
a=a/b; заменяется на a/=b;
a=a&b; заменяется на a&=b;
a=a|b; заменяется на a|=b;
Локальные и глобальные объекты
Если какой-нибудь объект описан вне функции, то он считается глобальным. При обращении к нему из функций не требуется его описания.
Если объект описан внутри функции, то он считается локальным и обращение к нему возможно только в этой подпрограмме.
Пример:
int i=3; /* описание глобального объекта i целого типа */
main()
{
int j; /* описание локального объекта j целого типа */
j=i+2; /* i описывать не надо, она является глобальной */
printf("\ni=%d j=%d",i,j); /* i=3 j=5 */
}
Модификатор extern
Если в программном модуле необходимо использовать глобальный объект, описанный вне данного программного модуля (например, какой-то объект описан в модуле, странслированном отдельно), то его необходимо описать с модификатором extern. Это дает информацию компоновщику для связывания этих объектов по их имени.
Пример: два программных модуля, странслированных отдельно друг от друга.
1-й модуль:
int ___error,t; /* глобальные объекты ___error и t */
main()
{
. . .
}
2-й модуль.
test2() /* функция test2 */
{
/* тело функции */
extern int ___error; /* глобальный объект ___error */
int t; /* локальный объект t, не эквивалентный глобальному
объекту t в 1-м модуле */
... }
Статические и динамические объекты
В С объекты могут быть расположены по фиксированным адресам памяти - статические, либо в какой-то области памяти по мере их появления (обычно в стеке) - динамические. Динамические объекты, например, описанные внутри функции переменные, при каждом вызове функции могут располагаться по разным адресам памяти ЭВМ.
Все глобальные объекты являются статическими.
Все локальные объекты являются динамическими.
Если все же необходимо сделать локальный объект статическим, то используется модификатор типа static.
Пример:
static int a,b,c;
Регистровые переменные
Если необходимо, чтобы переменная располагалась в одном из регистров общего назначения процессора (что повышает скорость работы с ними - это бывает необходимо, например, при написании управляющих программ), то при описании используется модификатор register. Если будет описано слишком много регистровых переменных (больше, чем регистров общего назначения), то компоновщик часть из них сделает регистровыми, а часть простыми переменными, не предупреждая пользователя.
Примеры:
register int g;
register char f;