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)