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).

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

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

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

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

Из книги Журнал «Компьютерра» №46 от 15 декабря 2005 года автора Журнал «Компьютерра»

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


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

Из книги Разгони свой сайт автора Мациевский Николай

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


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

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

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


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

Из книги Эффективное делопроизводство автора Пташинский Владимир Сергеевич

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


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

Из книги Excel. Мультимедийный курс автора Мединов Олег

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


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

Из книги Основы AS/400 автора Солтис Фрэнк

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


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

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

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


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

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

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


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

Из книги О чём не пишут в книгах по Delphi автора Григорьев А. Б.

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


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

Из книги Технология XSLT автора Валиков Алексей Николаевич

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


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

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

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


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

Из книги Язык программирования ABC PASCAL автора Цветков Александр Станиславович

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


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

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

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


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

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

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