Няшная / Говнокод #13875 Ссылка на оригинал

0

  1. 1
for (normalize(); n > 0; scanf("%d", &temp, n--)){...}

Но ведь работает!

Запостил: Nex Nex, (Updated )

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

  • А чем это лучше for (normalize(); n > 0; scanf("%d", &temp), n--){...} ?
    Ответить
    • Возможно вы имели в виду "а чем это лучше
      normalize();
      while (n > 0) {
          // ... то что было в скобках ...
          scanf("%d", &tmp);
          --n;
      }
      // или
      for (; n > 0; --n) {
          // ... то что было в скобках ...
          scanf("%d", &tmp);
      }
      "? 🙂
      Ответить
      • Это всё синтаксический сахар. А версия от автора будет падать, если scanf окажется stdcall, a main -- omit-frame-pointer.
        Ответить
        • > если scanf окажется stdcall
          Каким хреном? 🙂 stdcall не умеет в переменное число аргументов...
          Ответить
          • Блин, и правда, тупые компиляторы не умеют генерировать stdcall для функций с переменным числом аргументов.
            Но я готов поклясться, что где-то читал, что va_end() как раз нужен для того, чтобы stdcall-подобные соглашения о вызове могли правильно чистить стек для функций с переменным числом аргументов.
            Ответить
            • > stdcall для функций с переменным числом аргументов
              А как? Обязать функцию просканить все дополнительные параметры, чтобы va_end смог законфигурить разгрузку стека на возврате?

              На ящике с динамитом сидеть конечно можно, но не нужно 😉
              Ответить
              • >А как? Обязать функцию просканить все дополнительные параметры, чтобы va_end мог правильно размотать стек?
                Именно так 🙂
                Ответить
                • Ну или передать неявным аргументом количество дополнительных аргументов.

                  P.S. На самом деле можно придумать и такое соглашение, но это никому не нужно 😉
                  Ответить
                  • Это уже по-питушиному и анскильно.
                    [size=1]я всё правильно назвал?[/size]
                    Ну и где мой бб-код? 🙁
                    Ответить
                    • > [size=1]я всё правильно назвал?[/size]
                      > Ну и где мой бб-код? 🙁
                      вот здесь: я всё правильно назвал?
                      Ответить
    • Твой вариант лучше, т. к. в стек не помещаются лишние аргументы.
      А ещё, он понятнее.
      Ответить
    • продолжим извращаться :

      for (normalize(); n > 0; scanf("%d", &temp), n--){...}


      дальше:

      for (normalize(); n > 0;  n--){
      scanf("%d", &temp);
      }
      Ответить
      • normalize() можно вынести вперед, тогда получится, то что я уже видел выше.
        Ответить
      • n-- это анскилльная питушня, настоящий Сишник напишет --n, ибо оно работает быстрее.
        Ответить
  • Кстати, можно соптимизировать:
    for (normalize(); n > 0; scanf("%d", &temp, --n)){...}
    Ответить
    • Без посимвольного сравнения и не сразу узреешь всю соль Вашего комментария.
      Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8