Re: <none>
- From
- Stanislav Yaroshenko ()
- To
- Mike Murov
- Date
- 2002-10-03T01:33:40Z
- Area
- RU.ALGORITHMS
From: "Stanislav Yaroshenko" <coom@astral.ntu-kpi.kiev.ua>
"Mike Murov" <Mike.Murov@p55.f976.n5030.z2.fidonet.org> сообщил/сообщила в
новостях следующее: ...
> Уважаемые господа!
> К сожалению не имею времени работать с оригинальным C++ стандартом и
> пользуюсь выжимками от Microsoft (MSDN, April 2000). Так вот, по
исследуемому
> вопросу там сказано следующее:
Чем пользуешься - на то и расчитывай. Если MS гарантирует тебе, то на
здоровье. Но от других компиляторов этого не ожидай, даже если они
соответствуют стандарту, ибо стандарт в данном случае говорит о
"неопределенном поведении". MS здесь не вступает в противоречие, ибо тот
порядок вычисления, который ты указал, есть один из видов неопределенного
поведения.
> Так вот, насколько я понимаю <start> assign the value <skip> to the
storage
>location named <end> довольно явно указывает на принудительную прямую
>модификацию памяти, которая же будет являтся и значением выражения. Причем
для
>всей группы операторов присвоение является не каким-то доп.эффектом, а
самым
>что ни на есть основным.
Не дополнительным, а побочным (side effect) - термин из стандарта. То, что
он применяется именно для присваивания, не делает его основным: изменение
переменной в процессе вычисления выражения является побочным эффектом.
Возможно, тебе станет более понятно (сам, когда переходил с Паскаля на С,
долго въезжал), если я скажу, что инструкции присваивания (в таком виде, как
это было в Паскале), в С нет. Есть инструкция _выражение_. А присваивание -
лишь частные случай. Таким образом, b=a=7; a+7; 3+7; a++; 4; относятся к
одной группе - инструкция выражение.
С уважением, Coom
--- ifmail v.2.15dev5
* Origin: NTUU "KPI" (2:5020/400)