1. C++ / Говнокод #1125

    −36.7

    1. 1
    i+=i+=++i+i++;

    в университете была лекция на тему "как сократить код, не прибегая к ассемблеру"

    Запостил: guest, 02 Июня 2009

    Комментарии (13) RSS

    • надеюсь, рассказали почему код не рабочий?
      Ответить
    • [quote=Говногость]надеюсь, рассказали почему код не рабочий?[/quote]

      Почему же не рабочий? Вполне рабочий! Вот результат работы - это уже другой вопрос! :)))
      Ответить
    • неопределённое поведение не предполагает ничего, даже того, что выполнение дойдёт до "результата".
      Ответить
    • [quote=Говногость]неопределённое поведение не предполагает ничего, даже того, что выполнение дойдёт до "результата".[/quote]

      Вопрос на засыпку: что здесь неопределённое - поведение, или порядок вычисления?
      Ответить
    • [quote=Говногость]Вопрос на засыпку: что здесь неопределённое - поведение, или порядок вычисления?[/quote]

      Ответ: поведение.
      Между точками следования переменная может быть изменена только один раз, иначе поведение не неопределённое (undefined)
      Ответить
    • ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ!1111111111 1111
      Ответить
    • видимо препод был собой страшно доволен после этого. плохо пахнет чтото ваш код.
      Ответить
    • dead_star:
      давольно интересно
      протестил, код вполне рабочий и результат ожидаемый, хоть этот код и сложн для восприятия
      если в пееменную i подставить 1 то по результату работы в переменной i окажется 14
      Ответить
    • Xaionaro:
      #8
      [xaionaro@xai ~]$ cat >t.c

      #include <stdio.h>
      
      int main() {
              int i;
              i=1;
              i+=i+=++i+i++;
              printf("%i\n",i);
      }

      [xaionaro@xai ~]$ gcc -o t t.c
      [xaionaro@xai ~]$ ./t
      13
      Ответить
      • Если подставить i=0 то на gcc получится 7 а на borland 8 :)
        Ответить
    • там результаты могут быть разные в зависимости от версии сборки (дебажной, релизной), компилятор может оптимизировать не совсем правильно.
      Ответить
      • Да и не только результаты. Компилятор имеет полное право вместо действий над i накомпилировать распечатку ascii-art'а с голубыми неграми.
        Ответить
    • Я очередной говнопрепод говнокодер, и самое грустное то, что он из студентов делает говностудентов.
      Ответить

    Добавить комментарий