Сообщение Re[7]: Приоритет операторов в C++ от 27.01.2017 14:39
Изменено 27.01.2017 14:51 N. I.
Re[7]: Приоритет операторов в C++
rg45:
R>Таким образом, при использовании постинкремента в правой части, мы знаем только, и присваивание и инкремент произойдут после value computation, но в каком порядке — неизвестно.
Примерно так, но тут следует уточнить, что порядок не неизвестен, его вообще не существует. Наличие неизвестного порядка и отсутствие какого-либо порядка — это две разные ситуации. Две unsequenced модификации одного скалярного объекта приводят к undefined behavior, а две indeterminately sequenced модификации одного скалярного объекта — нет. В данном случае у нас именно unsequenced modifications.
R>Таким образом, при использовании постинкремента в правой части, мы знаем только, и присваивание и инкремент произойдут после value computation, но в каком порядке — неизвестно.
Примерно так, но тут следует уточнить, что порядок не неизвестен, его вообще не существует. Наличие неизвестного порядка и отсутствие какого-либо порядка — это две разные ситуации. Две unsequenced модификации одного скалярного объекта приводят к undefined behavior, а две indeterminately sequenced модификации одного скалярного объекта — нет. В данном случае у нас именно unsequenced modifications.
Re[7]: Приоритет операторов в C++
rg45:
R>Таким образом, при использовании постинкремента в правой части, мы знаем только, и присваивание и инкремент произойдут после value computation, но в каком порядке — неизвестно.
Примерно так, но тут следует уточнить, что порядок не неизвестен, его вообще не существует. Наличие неизвестного порядка и отсутствие какого-либо порядка — это две разные ситуации. Две unsequenced модификации одного скалярного объекта приводят к undefined behavior, а две indeterminately sequenced модификации одного скалярного объекта — нет. В данном случае у нас именно unsequenced modifications.
В C++17 строгий порядок в таком примере будет обеспечен за счёт нового правила для операторов присваивания:
R>Таким образом, при использовании постинкремента в правой части, мы знаем только, и присваивание и инкремент произойдут после value computation, но в каком порядке — неизвестно.
Примерно так, но тут следует уточнить, что порядок не неизвестен, его вообще не существует. Наличие неизвестного порядка и отсутствие какого-либо порядка — это две разные ситуации. Две unsequenced модификации одного скалярного объекта приводят к undefined behavior, а две indeterminately sequenced модификации одного скалярного объекта — нет. В данном случае у нас именно unsequenced modifications.
В C++17 строгий порядок в таком примере будет обеспечен за счёт нового правила для операторов присваивания:
The right operand is sequenced before the left operand.