Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Andrey Tarasevich                    2:5020/400     03 Oct 2002  03:01:09
 To : Mike Murov
 Subject : <none>
 -------------------------------------------------------------------------------- 
 
 Wed Oct 02 2002 16:07, Mike Murov wrote to Serge Nozhenko:
 
  >>>>  AT> Итак, _вычислением_ выражения 'a ^= b' в C/C++ называется
  >>>>  AT> процесс вычисления значения 'a ^ b'. Hи больше, ни меньше.
  >>>>  AT> Величина 'a ^ b' называется _результатом_ выражения 'a ^= b'.
  >>>>  AT> Все. Больше ничего в _результат_ выражения 'a ^= b' не
  >>>>  AT> входит.
  >>>> 
  >>>> [...дальнейшие рассуждения поскипаны...]
 
  MM> <skip here appear>
  MM>   Уважаемые господа!
  MM>   К сожалению не имею времени работать с оригинальным C++ стандартом и
  MM> пользуюсь выжимками от Microsoft (MSDN, April 2000). Так вот, по
  MM> исследуемому вопросу там сказано следующее:
 
  MM> Assignment Operators:  =, +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=
 
  MM>   An assignment operation assigns the value of the right-hand operand to
  MM> the storage location named by the left-hand operand. Therefore, the
  MM> left-hand operand of an assignment operation must be a modifiable
  MM> l-value. After the assignment, an assignment expression has the value of
  MM> the left operand but is not an l-value. The assignment-operator is one of
  MM> the following: <skipped>
 
 Очевидно, что это раздел был написан человеком, который неправильно
 проинтерпретировал требования спецификации языка. В этом тексте явно
 декларируется временнОе ограничение на момент возникновения побочного эффекта
 встроенного оператора присваивания. Спецификации языков С и С++ такого
 ограничения не делают. 
 
 Что интересно, это раздел в MSDN служит одновременно описанием "спецификации"
 этих операторов и для С и для С++. Как С++ описание, он содержит грубую ошибку
 - в языке С++ результат любого из вышеперечисланных встроенных операторов
 присваивания _является_ _Lvalue_. А в цитате сказано, что не является.
 
   int a;
   int* p = &(a = 5); // легально в С++, нелегально в С
 
  MM>   Так вот, насколько я понимаю <start> assign the value <skip> to the
  MM> storage location named <end> довольно явно указывает на принудительную
  MM> прямую модификацию памяти, которая же будет являтся и значением
  MM> выражения. Причем для всей группы операторов присвоение является не
  MM> каким-то доп.эффектом, а самым что ни на есть основным.
 
 В С/С++ у операторов и выражений нет никаких "основных эффектов". У операторов
 и выражений есть результаты и побочные эффекты. Все. Если вычисление какого-то
 выражения приводит к тому, что один из его операндов меняется - это, по
 определению, называется побочным эффектом. Моменты выполнения побочных
 эффектов в языках С и С++ определены с точностью до "где-то между парой
 соседених точек следования". Hигде и никогда ни С ни С++ более строгих
 требований на моменты выполнения побочных эффектов не накладывается. 
 
 В этом заключается сама идея точек следования, на которой держится весь
 процесс выполнения программы в С/С++. Когда процесс выполнения программы
 проходит через точку следования, гарантируется, что все предыдущие действия
 уже завершены, и ни одно последующее действие еще не начато. А пока программа
 находится между двух точек следования, нет и быть не может никаких гарантий о
 том, что уже сделано, а что еще нет.
 
 Best regards,
 Андрей.
 
 --- ifmail v.2.15dev5
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 <none>   stan72   21 Sep 2002 20:01:31 
 Re: <none>   Sergei Paschenko   23 Sep 2002 17:26:11 
 <none>   Dmitry Pyzhov   24 Sep 2002 01:07:14 
 Re: <none>   Andrey Tarasevich   25 Sep 2002 11:00:54 
 <none>   Dmitry Pyzhov   26 Sep 2002 11:28:38 
 Re: <none>   Andrey Tarasevich   27 Sep 2002 10:56:36 
 <none>   Vitaly Mayatskih   27 Sep 2002 17:40:43 
 <none>   Andrey Tarasevich   28 Sep 2002 01:34:37 
 Re: <none>   Anatoly Svishev   28 Sep 2002 00:33:11 
 Re: <none>   Andrey Tarasevich   28 Sep 2002 02:29:40 
 <none>   Aleksey Loginov   28 Sep 2002 11:09:12 
 Re: <none>   Vladislav Gusev   28 Sep 2002 12:30:15 
 Re: <none>   Pavel P   29 Sep 2002 10:27:02 
 <none>   Vitaly Mayatskih   29 Sep 2002 14:17:20 
 Re: <none>   Andrey Tarasevich   29 Sep 2002 23:29:43 
 Re: <none>   Anatoly Svishev   30 Sep 2002 03:07:53 
 Re: <none>   Andrey Tarasevich   30 Sep 2002 08:36:27 
 <none>   Ianos Gnatiuc   30 Sep 2002 22:54:13 
 <none>   Aleksey Loginov   01 Oct 2002 08:52:46 
 <none>   Ianos Gnatiuc   02 Oct 2002 10:59:01 
 <none>   Aleksey Loginov   03 Oct 2002 06:50:24 
 Re: <none>   Andrey Tarasevich   03 Oct 2002 07:40:22 
 Re: <none>   Vladislav Gusev   01 Oct 2002 16:36:43 
 <none>   Nickolas Hirgij   01 Oct 2002 22:50:02 
 Re: <none>   Pavel P   30 Sep 2002 06:22:38 
 <none>   Max Alekseyev   29 Sep 2002 22:46:08 
 Re: <none>   Andrey Tarasevich   30 Sep 2002 11:48:20 
 <none>   Max Alekseyev   30 Sep 2002 13:06:54 
 <none>   Andrey Tarasevich   01 Oct 2002 06:21:35 
 <none>   Serge Nozhenko   01 Oct 2002 15:08:24 
 Re: <none>   Andrey Tarasevich   01 Oct 2002 19:58:24 
 Re: <none>   Andrey Tarasevich   01 Oct 2002 21:34:18 
 <none>   Serge Nozhenko   02 Oct 2002 00:42:48 
 <none>   Andrey Tarasevich   02 Oct 2002 03:44:12 
 <none>   Mike Murov   02 Oct 2002 16:07:27 
 Re: <none>   Stanislav Yaroshenko   03 Oct 2002 01:33:40 
 <none>   Andrey Tarasevich   03 Oct 2002 03:01:09 
 <none>   Andrey Tarasevich   03 Oct 2002 03:49:50 
 Re: <none>   Vladimir A. Pertzel   30 Sep 2002 15:28:40 
 <none>   Ianos Gnatiuc   30 Sep 2002 23:02:32 
 <none>   Georgy Plechanov   23 Sep 2002 17:05:12 
 <none>   Igor Bychkov   24 Sep 2002 21:54:28 
 <none>   Nickolas Hirgij   24 Sep 2002 08:41:05 
 <none>   Ianos Gnatiuc   30 Sep 2002 00:50:35 
 <none>   Stanislav Shwartsman   30 Sep 2002 09:06:00 
 <none>   Ianos Gnatiuc   30 Sep 2002 22:16:12 
 Re: <none>   Vladislav Gusev   01 Oct 2002 16:12:30 
 <none>   Comoderator Of Ru Algorithms   02 Oct 2002 21:09:00 
 <none>   Ianos Gnatiuc   02 Oct 2002 12:02:13 
 Re: <none>   Vladislav Gusev   03 Oct 2002 19:25:24 
 <none>   Nickolas Hirgij   01 Oct 2002 20:38:42 
 Re: <none>   Vladislav Gusev   30 Sep 2002 13:25:00 
 <none>   Ianos Gnatiuc   30 Sep 2002 22:34:18 
 Re: <none>   Vladislav Gusev   01 Oct 2002 16:36:11 
 <none>   Stanislav Shwartsman   01 Oct 2002 22:35:23 
 Re: <none>   Vladislav Gusev   02 Oct 2002 13:14:46 
 <none>   Stanislav Shwartsman   02 Oct 2002 16:51:45 
 Re: <none>   Vladislav Gusev   03 Oct 2002 18:51:00 
 <none>   Dmitry Pyzhov   01 Oct 2002 01:26:34 
 <none>   Ianos Gnatiuc   01 Oct 2002 08:01:13 
 <none>   Nickolas Hirgij   01 Oct 2002 20:32:05 
 <none>   Kirill Frolov   03 Oct 2002 23:45:50 
 <none>   Igor Dolgov   04 Oct 2002 00:00:18 
Архивное /ru.algorithms/16679b280a49b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional