3.2.2 Порядок вычисления

3.2.2 Порядок вычисления

Порядок вычисления подвыражений в выражении неопределен. Например

int i = 1; v[i] = i++;

может вычисляться или как v[1]=1, или как v[2]=1. При отсутствии ограничений на порядок вычисления выражения может генерироваться более хороший код. Было бы замечательно, если бы компилятор предупреждал о подобных неоднозначностях, но большинство компиляторов этого не делают.

Относительно операций amp; amp; и !! гарантируется, что их левый операнд вычисляется раньше, чем правый. Например, b=(a=2,a=1) присвоит b 3.В #3.3.1приводятся примеры использования amp; amp; и !!. Заметьте, что операция следования , (запятая) логически отличается от запятой, которая используется для разделения параметров в вызове функции. Рассмотрим

f1(v[i],i++); // два параметра f2( (v[i],i++) ) // один параметр

В вызове f1 два параметра, v[i] и i++, и порядок вычиления выражений-параметров неопределен. Зависимость выражения -параметра от порядка вычисления – это очень плохой стиль, а также непереносимо. В вызове f2 один параметр, выражение с запятой, которое эквивалентно i++.

С помощью скобок нельзя задать порядок вычисления. Например, a*(b/c) может вычисляться и как (a*b)/c, поскольку * и / имеют одинаковый приоритет. В тех случаях, когда важен прядок вычисления, можно вводить дополнительную переменную, например, (t=b/c,a*t).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Оптимизируем вычисления

Из книги автора

Оптимизируем вычисления Google Gears ( http://gears.google.com/ ) обеспечивает выполнение напряженных вычислений без двух вышеоговоренных ограничений. Однако в общем случае нельзя полагаться на наличие Gears (в будущем было бы замечательно, чтобы решение по типу Gears WorkerPool API стало частью


Сетевые вычисления

Из книги автора

Сетевые вычисления В компьютерной индустрии любят революции. В центре внимания постоянно находятся принципиально новые модели вычислений. Газеты, журналы, консультанты и эксперты до небес превозносят их достоинства и убеждают Вас немедленно применить их на деле. Но


Совместные вычисления

Из книги автора

Совместные вычисления Рабочим группам, состоящим из сотрудников одной или нескольких организаций, необходимо взаимодействие и разделение информации. В этой связи многих привлекает клиент-серверное ПО для рабочих групп, обычно называемое групповым ПО (groupware). В основе


10.13.7 Вычисления после повторной отправки

Из книги автора

10.13.7 Вычисления после повторной отправки В представленных выше формулах используется значение времени цикла как интервала между отправкой сегмента и получением подтверждения его приема. Однако предположим, что в течение периода тайм-аута подтверждение не получено и


3.4.1. Порядок вычисления операндов

Из книги автора

3.4.1. Порядок вычисления операндов Эта проблема связана с тем, что у человека есть определенные интуитивные представления о порядке выполнения действий программой, однако компилятор не всегда им соответствует. Рассмотрим следующий код (листинг 3.47, пример OpOrder на


Порядок вычисления в формулах

Из книги автора

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


Простейшие вычисления

Из книги автора

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


Операция последовательного вычисления

Из книги автора

Операция последовательного вычисления Операция последовательного вычисления последовательно вычисляет два своих операнда, сначала первый, затем второй. Оба операнда являются выражениями. Синтаксис операции:<выражение1>, <выражение2>Знак операции - запятая,


Контекст вычисления выражений

Из книги автора

Контекст вычисления выражений Выражения всегда вычисляются в некотором контексте — окружении, которое зависит от того, какая часть документа обрабатывается XSLT-процессором в данный момент, и какие объявления присутствовали в самом преобразовании.Контекст


Контекст вычисления выражений

Из книги автора

Контекст вычисления выражений Как мы видели ранее, в XSLT одно и то же правило преобразования может применяться к различным частям XML-документа и в каждом случае результат будет разным — в зависимости от того, как выглядит обрабатываемый фрагмент. Подобно этому,


ТЕХНОЛОГИИ: Параллельные вычисления: кластеры

Из книги автора

ТЕХНОЛОГИИ: Параллельные вычисления: кластеры Авторы: Сергей Озеров, Алексей КалиниченкоВершина современной инженерной мысли - сервер Hewlett-Packard Integrity Model SD64A. Огромная SMP-система, объединяющая в себе 64 процессора Intel Itanium 2 с частотой 1,6 ГГц и 256 Гбайт оперативной памяти,


Вычисления, основанные на компонентах

Из книги автора

Вычисления, основанные на компонентах В ОО-вычислениях существует только один базовый вычислительный механизм. Есть некоторый объект, всегда являющийся (в силу предыдущего правила) экземпляром некоторого класса, и вычисление состоит в том, что данный объект вызывает


Ингредиенты вычисления

Из книги автора

Ингредиенты вычисления При поиске правильной архитектуры ПО критическим является вопрос о модуляризации: какие критерии нужно использовать при выделении модулей наших программ? Чтобы верно ответить на него, нужно сравнить соперничающих кандидатов.


Итоговые вычисления в таблицах

Из книги автора

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