4.1. Что такое выражение?
4.1. Что такое выражение?
Выражение состоит из одного или более операндов, в простейшем случае – из одного литерала или объекта. Результатом такого выражения является r-значение его операнда. Например:
void mumble() {
3.14159;
"melancholia";
upperBound;
}
Результатом вычисления выражения 3.14159 станет 3.14159 типа double, выражения "melancholia" – адрес первого элемента строки типа const char*. Значение выражения upperBound – это значение объекта upperBound, а его типом будет тип самого объекта.
Более общим случаем выражения является один или более операндов и некоторая операция, применяемая к ним:
salary + raise
ivec[ size/2 ] * delta
first_name + " " + 1ast_name
Операции обозначаются соответствующими знаками. В первом примере сложение применяется к salary и raise. Во втором выражении size делится на 2. Частное используется как индекс для массива ivec. Получившийся в результате операции взятия индекса элемент массива умножается на delta. В третьем примере два строковых объекта конкатенируются между собой и со строковым литералом, создавая новый строковый объект.
Операции, применяемые к одному операнду, называются унарными (например, взятие адреса () и разыменование (*)), а применяемые к двум операндам – бинарными. Один и тот же символ может обозначать разные операции в зависимости от того, унарна она или бинарна. Так, в выражении
*ptr
* представляет собой унарную операцию разыменования. Значением этого выражения является значение объекта, адрес которого содержится в ptr. Если же написать:
var1 * var2
то звездочка будет обозначать бинарную операцию умножения.
Результатом вычисления выражения всегда, если не оговорено противное, является r-значение. Тип результата арифметического выражения определяется типами операндов. Если операнды имеют разные типы, производится преобразование типов в соответствии с предопределенным набором правил. (Мы детально рассмотрим эти правила в разделе 4.14.)
Выражение может являться составным, то есть объединять в себе несколько подвыражений. Вот, например, выражение, проверяющее на неравенство нулю указатель и объект, на который он указывает (если он на что-то указывает) :
ptr != 0 *ptr != 0
Выражение состоит из трех подвыражений: проверку указателя ptr, разыменования ptr и проверку результата разыменования. Если ptr определен как
int ival = 1024;
int *ptr = ival;
то результатом разыменования будет 1024 и оба сравнения дадут истину. Результатом всего выражения также будет истина (оператор обозначает логическое И).
Если посмотреть на этот пример внимательно, можно заметить, что порядок выполнения операций очень важен. Скажем, если бы операция разыменования ptr производилась до его сравнения с 0, в случае нулевого значения ptr это скорее всего вызвало бы крах программы. В случае операции И порядок действий строго определен: сначала оценивается левый операнд, и если его значение равно false, правый операнд не вычисляется вовсе. Порядок выполнения операций определяется их приоритетами, не всегда очевидными, что вызывает у начинающих программистов на С и С++ множество ошибок. Приоритеты будут приведены в разделе 4.13, а пока мы расскажем обо всех операциях, определенных в С++, начиная с наиболее привычных.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Выражение признательности
Выражение признательности Появление данной книги было бы невозможным без помощи и поддержки моих коллег, которые щедро одаривали меня своими многочисленными предложениями и комментариями. Это: Люк Базинет (Luc Bazinet), Джеймс Чанг (James Chang), Дэн Додж (Dan Dodge), Дейв Донахо (Dave Donaho),
Выражение действия
Выражение действия Выражение действия (action expression) выполняется в том и только в том случае, когда переход срабатывает. Представляет собой атомарную операцию (достаточно простое вычисление), выполняемую сразу после срабатывания соответствующего перехода до начала каких
Выражение признательности
Выражение признательности Работая над книгой, я много раз продумывал содержание этого приятного раздела, каждый раз добавляя в него новые и новые имена людей, без помощи которых эта книга вряд ли увидела бы свет.В первую очередь это заслуга директора издательства
R.6.2 Оператор-выражение
R.6.2 Оператор-выражение Чаще всего операторами бывают выражения; в этом случае оператор имеет такой вид:оператор-выражение: выражение opt;Обычно операторы-выражения являются присваиваниями или вызовами функций. Все побочные эффекты выполнения оператора-выражения
Выражение объединения в SQL
Выражение объединения в SQL В SQL Server объединение можно установить с помощью выражения эквивалентности между двумя полями, например:SELECT FirstName, LastName, OrderDate FROM tblOrder INNER JOIN tblCustomer ON tblOrder.CustomerID = tblCustomer.IDЭтот запрос SQL возвращает информацию обо всех клиентах, которые имеют заказы в
Как работает условное выражение
Как работает условное выражение Структуры If. . .Then, Select Case и Do . . .Loop принимают решение о последующих действиях на основе простого теста: какое значение принимает выражение- True (Истина) или False (Ложь)? Условием здесь может быть любое выражение VBA. (Не забывайте, что в VBA 0
Оператор-выражение
Оператор-выражение Синтаксис:<выражение>;Действие:<Выражение> вычисляется в соответствии с правилами, изложенными в разделе 4 "Выражения". Отличие оператора-выражения состоит в том, что значение содержащегося в нем выражения никак не используется. Кроме того, он
4.7. Условное выражение
4.7. Условное выражение Условное выражение, или оператор выбора, предоставляет возможность более компактной записи текстов, включающих инструкцию if-else. Например, вместо:bool is_equal;if (!strcmp(str1,str2)) is_equal = true;else is_equal = false;можно употребить более компактную запись:bool is_equa1 = !strcmp( strl,
9.1 Оператор Выражение
9.1 Оператор Выражение Большинство операторов является операторами выражение, которые имеют видвыражение ;Обычно операторы выражение являются присваиваниями и взовами
Что такое PDF?
Что такое PDF? PDF — очень распространенный тип документов, предложенный компанией Adobe. В таком виде публикуют инструкции к технике, различные справочные и рекламные материалы, каталоги товаров, электронные версии журналов и книг. Поскольку документы, сохраненные в виде PDF,
Выражение спецификаций
Выражение спецификаций От неформальных высказываний перейдем к простой математической нотации, принятой в теории формальной проверки правильности программ и имеющей ценность при доказательстве корректности программных
Выражение аксиом
Выражение аксиом Из соответствия между АТД функциями и компонентами класса можно вывести соответствие между утверждениями класса и семантическими свойствами АТД.[x]. Предусловие для специфицированной в АТД функции появляется как предусловие программы, соответствующей
КАФЕДРА ВАННАХА: Гражданское общество, определённое через логическое выражение
КАФЕДРА ВАННАХА: Гражданское общество, определённое через логическое выражение Автор: Ваннах МихаилДавным-давно Владимир Иванович Даль дал в своём словаре определение «гражданского общества». Именно его! Хотя сам великий лексикограф и писатель бывал и в Третьем