Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример. В следующем фрагменте значение переменной a непредсказуемо:



В следующем фрагменте значение переменной a непредсказуемо:

d=0; a=b++=c++=d++;

Цепочка присваиваний может приводить к различным результатам.

Первый способ: c получает значение d, а затем обе переменные инкрементируются.

Далее b присваивается значение с и затем b инкрементируется. И, наконец, результат 2 присваивается переменной а.

Второй способ: Сначала выполняется цепочка присваиваний, а затем операции инкремента. В этом случае последнее присваивание имеет вид a=0.

Оба метода с точки зрения стандарта языка являются правильными. Стандарт сознательно устроен так, что большинство подобных вопросов оставлено на усмотрение разработчиков компиляторов, так как лучший порядоквычислений определяется архитектурой машины.

Вывод: Для обеспечения переносимости программ следует избегать выражений, которые зависят от порядка вычислений и дают непредсказуемые побочные эффекты (побочные эффекты иногда полезны).

В следующей таблице приведены приоритеты и порядок выполнения для всех операций Си (включая и те, которые еще не изучались).

Операции с одинаковым приоритетом выполняются слева направо в порядке следования.





Дата публикования: 2014-12-25; Прочитано: 176 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...