Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
834 Приложение Б
-- подобна ++, но вычитает 1.
Операции отношений
Каждая из следующих операций сравнивает значение слева от нее со значением справа:
Выражения отношений
Простейшее выражение отношения состоит из операции отношения с двумя операндами. Если сравнение истинно, выражение отношения имеет значение 1, а если ложно — то значение 0. Ниже показаны два примера:
5 > 2 истинно, имеет значение 1.
(2 + а) == а ложно, имеет значение 0.
Операции присваивания
Язык С имеет одну базовую и несколько объединенных операций присваивания. Базовая форма записывается как одиночный знак равенства:
= присваивает значение справа 1-значению слева.
Каждая из следующих операций присваивания обновляет 1-значение, находящееся слева, значением, указанным справа, с использованием указанной операции (правый операнд обозначается как П-О , а левый — как Л-О):
+= добавляет величину П-О к переменной Л-О и помещает результат в переменную Л-О.
-= вычитает величину П-О из переменной Л-О и помещает результат в переменную Л-О.
*= умножает переменную Л-О на величину П-О и помещает результат в переменную Л-О.
/= делит переменную Л-О на величину П-О и помещает результат в переменную Л-О.
%= получает остаток от деления величины Л-О на величину П-О и помещает результат в переменную Л-О.
&= присваивает Л-О & П-О величине Л-О и помещает результат в переменную Л-О.
I = присваивает Л-О | П-О величине Л-О и помещает результат в переменную Л-О.
Пример
rabbits *= 1.6; дает тот же результат, что иrabbits = rabbits * 1 . 6 ;
Логические операции
Логические операции обычно принимают в качестве операндов выражения отношений. Операция ! принимает один операнд, остальные — два: левый и правый.
&& И
|| ИЛИ
! НЕ
Логические выражения
выражение 1 && выражение2 истинно тогда и только тогда, когда оба выражения истинны.
выражение 1 || выражение2 истинно, когда любое из выражений либо оба
сразу истинны.
! выражение истинно, когда выражение ложно, и наоборот.
Порядок оценки логических выражений
Логические выражения оцениваются слева направо. Оценка прекращается, как только становится ясно, что выражение ложно.
Примеры
6>2&&3==3 истинно.
! ( 6 > 2 & & 3 == 3 ) ложно.
х ! = 0 && 2 0/х < 5 второе выражение оценивается, только если х отлич
но от 0.
Условная операция
Операция ? : принимает три операнда, каждый из которых является выражением. Они располагаются следующим образом:
выражение1 ? выражение? : выражениеЗ
Значение полного выражения равно значению выражение2, если выражение1 истинно, и значению выражениеЗ в противном случае.
Примеры
836 Приложение Б
( 3 > 5 ) ? 1 : 2 имеет значение 2.
( а > b ) ? а : b имеет значение, большее среди а и b.
Операции, связанные с указателями
& операция взятия адреса. Когда за ней следует имя переменной, & дает ее адрес.
* операция разыменования. Когда за ней следует указатель, * дает значение, сохраненное по указанному адресу.
Примеры
Здесь Snurce — это адрес переменной nurce: nurse = 22;
ptr = &nurse; /* указатель на nurse */ val = *ptr;
Общий результат заключается в присваивании переменной val значения 22.
Операции со знаком
- знак минуса меняет знак операнда на противоположный.
+ знак плюса оставляет знак операнда без изменений.
Операции структур и объединений
Структуры и объединения используют операции для идентификации их индивидуальных членов. Операция членства применяется со структурами и объединениями, а операция косвенного членства — с указателями на структуры и объединения.
Операция членства
Операция членства (.) используется с именем структуры или объединения для указания члена этой структуры или объединения. Если name — имя структуры или объединения, a member — член, определенный шаблоном структуры, то name.member идентифицирует этот член структуры. Типом name.member является тип, указанный для member. В аналогичной манере операция членства может применяться с объединениями.
Пример
struct {
int code; float cost;
} item;
item.code = 1265;
Приведенный оператор присваивает значение элементу code структуры item.
Операция косвенного членства (или операция указателя на структуру)
Операция косвенного членства (->) используется с указателем на структуру или объединение для идентификации члена этой структуры или объединения. Предположим,
Справочные материалы 837
что ptr str — указатель на структуру, a member — член, определенный шаблоном структуры. Тогда ptrstr->member идентифицирует член структуры, на которую ссылается указатель. В аналогичной манере операция косвенного членства может применяться с объединениями.
Пример
struct {
int code; float cost;
} item, * ptrst;
ptrst = &item;
ptrst->code = 3451;
Этот фрагмент кода присваивает значение члену code структуры item. Следующие три выражения эквивалентны:
ptrst->code item.code (*ptrst).code
побитовые операции
Все описанные ниже побитовые операции за исключением ~ являются бинарными.
~ унарная операция “НЕ”, дающая в результате значение операнда, в котором каждый бит инвертирован.
& операция “И”, дающая в результате значение, в котором каждый бит установлен в 1, если соответствующие биты в обоих операндах равны 1.
I операция “ИЛИ”, дающая в результате значение, в котором каждый бит установлен в 1, когда любой из соответствующих битов операндов либо оба сразу равны 1.
Аоперация исключающего “ИЛИ”, дающая в результате значение, в котором каждый бит установлен в 1, когда любой из соответствующих битов операндов (но не оба сразу) равны 1.
<< операция сдвига влево, дающая значение, которое получено в результате сдвига битов левого операнда влево на количество позиций, указанное правым операндом. Освобождаемые места заполняются нулями.
>> операция сдвига вправо, дающая значение, которое получено в результате сдвига битов левого операнда вправо на количество позиций, указанное правым операндом. Для беззнаковых целых освобождаемые места заполняются нулями. Поведение для целых со знаком зависит от реализации.
Примеры
Предположим, что имеются следующие операторы:
int х = 2;
int у = 3;
Тогда х & у дает в результате значение 2, потому что только один бит “включен” как в х, так иву. Кроме того, х << у дает в результате значение 12, поскольку это значение получается, когда битовый шаблон 3 сдвигается на 2 бита влево.
Читать дальшеИнтервал:
Закладка: