Re[2]: Приоритет операторов в C++
От: rg45 СССР  
Дата: 24.01.17 07:55
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Ну, например, что означают выражения:


RF>
RF>++*p1 = ++*p2;
RF>


Разыменование двух указателей с последующим инкрементом адресуемых объектов и присваиванием.

Если только все используетые операторы не являются перегруженными, то, согласно пункту 1.9/15 стандарта С++11, такое выражение порождает неопределенное поведение, поскольку скалярный объект, адресуемый указателем p1, модифицируется дважды посредством неупорядоченных побочных эффектов:

If a side effect on a scalar object is unsequenced relative to either another side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined.


В C++03 это поведение регулировалось таким понятием как "точки следования". Начиная с C++11 точки следования были заменены уточненными понятиями, но принцип сохранился.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 24.01.2017 7:57 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.