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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Igor Chumak                          2:5020/400     03 Nov 2003  12:20:57
 To : Alexandr Molchevsky
 Subject : Re: Kylix крек
 -------------------------------------------------------------------------------- 
 
 Hello, Alexandr!
 You wrote to Vasya Kruglov on Sun, 02 Nov 2003 11:58:57 +0300:
 
  AM> Hello Vasya.
 
  AM> 01 Nov 03 11:53, you wrote to me:
  AD>>>> ну и что? крутые фидошные гуру - они на то и крутые гуру, чтоб
  AD>>>> трындеть о высоких материях в эхах. ты, видимо, просто новенький.
  AM>>>         Hу если это высокие материи :
  AM>>>         int i=1;
  AM>>>         i=(++i)+(++i)+(++i);
  AM>>>         А ведь каждый компилятор имеет свое мнение о том как это
  AM>>> должно работать. Hапример MSVC++ даже два разных мнения имеет,
  AM>>> одно для отладочного режима второе для релиза. И оба неправильные.
  AM>>> :)
  VK>> Я не знаю, какие мнения у MSVC, но мое мнение такое: это пример не
  VK>> "невысоких материй", а обыкновенного... какое бы слово поцензурнее
  VK>> подобрать... идиотизма. Причем в медицинском смысле :-))
 
  AM>         Это ты такой умный потому что тут сразу видно что это
  AM> "идиотизм", а когда у тебя в подобное разворачивается выражение из
  AM> макросов, например, то так сразу не скажешь.
 
  VK>> P.S. Есть примеры, когда подобные конструкции (с неочевидным
  VK>> результатом) оправданы, т.е. их нельзя заменить на код, который
  VK>> может быть понят лишь единственным образом?
 
  AM>         Легко! Вот "чудесное" наблюдение от Антона Москаля:
 
  AM> = SU.C_CPP (2:4656/7.2)
  AM> =======================================================
  AM>  Msg  : 16 of 51
  AM>  From : Anton Moscal                        2:5020/400      19 Sep
  AM> 03  15:57:45
  AM>  To   : All
  AM>  Subj : Side effects
  AM> =====================================================================
  AM> ==========
  AM> From: "Anton Moscal" <msk@mail.tepkom.ru>
 
  AM> Hello, All!
 
  AM> Вопрос для широкой публики - являтеся ли данная программа корректной
  AM> программой на С (в частности - что она должна вывести на печать?)
 
  AM> ===================
  AM> int stack [100];
  AM> int *p = stack;
  AM> void push (int v) { *p++ = v; }
  AM> int  pop  (void) { return *--p; }
  AM> int  add  (void) { int i = pop (); return i + pop (); }
  AM> int  fn (int c) { return c*10; }
 
  AM> # include <stdio.h>
 
  AM> int main (void)
  AM> {
  AM>    printf ("%d, %d\n",              fn ((push (1), push (2), add
  AM> ())),              fn ((push (3), push (4), add ()))
  AM>    );
  AM>    return 0;
  AM> }
  AM> ====================
 
  AM> Лично я склонен думать, что данная программа undefined, но для меня
  AM> это было неожиданностью.
 
 Hикогда не смогу понять, что заставляет людей придумывать себе грабли ;-))
 
 Конструкция типа
 push (1);
 push (2);
 int a=add();
 push (3);
 push (4);
 int b=add();
 printf(("%d, %d\n",a,b);
 
 дольше пишется или медленнее работает? Или если код понятен только автору,
 то это коссвенный признак крутизны? ;-)
 /*
 Сам не сишник, возможно автор примера имел в виду что-то другое, но я
 считаю, что если уж ЗАДОКУМЕHТИРОВАHО (а это ведь даже в учебнике по С есть
 , что порядок вычисления аргументов функции определяет компилятор) то не
 надо на это наступать. Я вот например даже скобки в арифметических
 выражениях всегда расставляю ;)
 То что С позволяет любой алгоритм оформить в виде ребуса - это ж не повод
 использовать такую "фичу" ;-))
 */
 
 With best regards, Igor Chumak.  E-mail: igor()g-auto.pul.kiev.ua
 --- ifmail v.2.15dev5
  * Origin: Adamant ISP news server (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Kylix крек   Vasya Kruglov   01 Nov 2003 12:53:33 
 Kylix крек   Alexandr Molchevsky   02 Nov 2003 12:58:57 
 Re: Kylix крек   Igor Chumak   03 Nov 2003 12:20:57 
 Re: Kylix крек   Kirill Frolov   04 Nov 2003 22:59:38 
Архивное /ru.linux/120346535467c.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional