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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
int clearscreen()
{
clrscr();
return 0;
}
void main()
{
char * c;

printf("You typed: %c",
       *c,
       scanf("%c",c),
       printf("Type any simbol: "),
       clearscreen());

}

Страшен язык Си 2

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

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

  • Alexander G:
    Хм. Один из "хороших вопросов на собеседовании" почему это может работать, почему может не работать, в каких местах содержится неопределённое поведение 🙂
    Ответить
  • Ну я тут вижу один недостаток - использование с в кач-ве адреса.

    scanf("%c",c) - мы записываем символ по адресу, который содержится в c..А аллах его знает, что там может быть..
    Ответить
  • Пропустил слово =)
    "использование с в кач-ве неопределенного адреса".
    Ответить
  • Alexander G:
    Порядок оценивания аргуметов не определён, хотя обычно получается с конца.
    Однако, про *с (предполагая, что указатель был бы коррекстно инициализирован) видимо поведение не undefined, а unspecified, т.е. *c будет оценено или до scanf или после, но без сюрпризов. Но для этого должен быть инициализирован не только указатель, но и то, на что он указывает, иначе unspecified переходит в undefined.
    Ответить
  • Аллах:
    только расово-неверные пидарасы используют scanf
    Ответить
  • Чайэфир:
    эм взываю к Аллаху, чем же пользуются расово-верные пидорасы? вы имеете религиозные предубеждения против scanf? вы предпочитаете считывать прямо из потоков?
    Ответить

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

Переведи на "PHP", guest!

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


    8