1. Си / Говнокод #4318

    +113

    1. 1
    char anarch[sizeof(long double) * sizeof(long)];

    Задали одному студенту (5 курса, между прочим) написать программу для решения анаграмм...
    Перед вами фрагмент кода, где объявляется буфер для хранения слова.
    На вопрос "Зачем ты так написал?" ответ был: "Хотел избавиться от дефайнов и магических чисел".
    На вопрос о размере буфера ответ был: "Так ведь не бывает слов длиннее 40 букв".

    Запостил: TarTar, 09 Октября 2010

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

    • Ну прямо маг и волбешник. Избавился.
      Ответить
    • Найдутся платформы, на которых значение будет другим.
      А вообще интересная тема использовать константы графических библиотек, например, (Red + Green) * Blue или что-нибудь в таком роде. Хорошая обфуска!
      Ответить
    • чел далеко пойдёт
      Ответить
    • Кокамидопропилпропиленгликольдимонийхлор идфосфат — 48 букв
      Ответить
      • Как видим, говнокод.ру считает, что не может быть >20 :)
        Ответить
    • "и как они ухитряются такое выдумывать?"
      Ответить
    • anarch? решение анархограмм?
      Ответить
      • Что это такое? Похоже опечатка студента, ибо выложивший говорил про анаграммы (к олимпиаде чтоли готовит?)
        Ответить
        • за опечатку сошло бы anachr как идентификатор в программе решения анахронизмов
          может быть anagram reschenie
          Ответить
    • sizeof(long double) * sizeof(long) - где здесь 40???????????
      кстати, расскажите ему про разрядность систем и заставьте компилировать под gcc с параметрами -m64
      это тонко намекнёт на суть происходящего
      Ответить
      • > sizeof(long double) * sizeof(long) - где здесь 40???????????

        sizeof(long double) = 10
        sizeof(long) = 4
        Ответить
        • Есть ли смысл вообще спорить об платформозависимых вещах ?
          Я например могу сказать, что sizeof( long double ) = 12.
          Но это не значит что у всех так.
          Ответить
          • Согласен. Просто написал где здесь может быть 40.
            Ответить
    • Хе-хе. Я когда маленьким был, мне родители говорили, что "некрасиво показывать пальцем", дак я показывал куда мне надо двумя пальцами, вместо того, чтобы пытаться объяснить нужное направление словами :)

      Тут детё тоже хак для препода придумало :)
      Ответить
      • > показывал куда мне надо двумя пальцами
        это - фаза, а это - нейтраль =)
        Ответить
    • Только заставил бедную машину выполнять на несколько команд больше и понтанулся. Мальчик, а не проще ли использовать new char[strlen(%строка%)+1] ? А то имена химических веществ, особенно изомеров, простираются ну очень далеко, гораздо дальше 39 символов (малыши ведь помнят про '\0' ?).
      Ответить

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