- 1
- 2
- 3
- 4
- 5
void ps(const char *a)
{/*means putstring*/
for(; '\0' != *a; a++)
putchar(' ' != *a ? *a : (putchar('\n'),'\t'));
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+136
void ps(const char *a)
{/*means putstring*/
for(; '\0' != *a; a++)
putchar(' ' != *a ? *a : (putchar('\n'),'\t'));
}
Как-то ночью, в час унылый, в голове собрав все силы,
Разум темный, как могила, начал свой хромой закон.
Начиная выражаться, а точнее проявляться,
В мир безбрежный и зеленый, зло построило свой ход:
Пальцы тонкие и злые, подчиняясь темной силе,
Выхватив перо в чернилах, вывели сей говногод.
Dummy00001 19.04.2013 00:05 # 0
это ГК в ГК. если бы просто `*a` было, то было бы законченное, совершенное ГК.
bormand 19.04.2013 08:58 # +3
Так тут проверяют не то, что *a не нулевое, а то, что не испортился ноль в '\0'.
ntfshard 19.04.2013 22:10 # 0
bormand 19.04.2013 22:40 # +1
bormand 19.04.2013 13:53 # +1
ntfshard 19.04.2013 22:08 # −3
PS код использовался для печати фич OpenGL. Чтобы не подряд, а в столбик да с отступом. >_<
bormand 19.04.2013 22:51 # +1
Из религиозных соображений или что-то объективное?
> но считаю хорошим, годным и полезным инструментом.
Тогда зачем тернарник с побочным эффектом вместо простого и понятного if'а?
А первый отступ выводится отдельно? Или в строку добавляете лишний пробел?
ntfshard 19.04.2013 22:59 # +1
Эм.. мы тут о говнокодах говорим? Хуже это лучше, разве не так?
А первый идет лесом, то есть без отступа. =__=' Я раньше об этом даже не задумывался. Точнее сказать, когда просто хочешь увидеть список (ради великого интереса), не паришься. Пусть будет так (вот и плюс for'а, по отношению к while):
bormand 19.04.2013 23:43 # 0
Ну да, для говнокода то тут все условия выполнены ;)
На говнокод и одного тернарника с побочным эффектом хватило бы... Но здесь даже никому не нужный в наши годы йода-стайл '\0' != *a имеется, хотя любой мало-мальски адекватный компилятор ругается на = вместо == в условиях ифа фора и вайла...
Кстати, без каких-либо проблем работало бы и простое *a ;)
> плюс for'а, по отношению к while
О_о. А перед while() этот putchar я бы поместить никак не смог...
> плюс for'а, по отношению к while
А ну да, для создания запутанных однострочников этот плюс безусловен.
ntfshard 20.04.2013 00:18 # 0
ИМХО, *a немного заставляет вспомнить, же у нас в а. А если это указатель на указатель? Не суть.. Важно, что в конце концов это один и тот же код в асме, с похожими записями на си. Но код пишем для людей, не для машин.
Каждый выбирает по себе.
>> мало-мальски адекватный компилятор ругается на = вместо == в условиях ифа фора и вайла...
Я разве спорю? Но вот на компилятор надейся, а сам не плошай. Не всегда можно заметить варнинг. Ну замылился глаз к вечеру - сидишь и не видишь баги.
Да и мало ли на чем писать приходится. К примеру, скриптовые языки, как то темный ПХП. (темный ибо нефига не видно >_<, и чуть чаще, чем всегда говнокод).
> О_о. А перед while() этот putchar я бы поместить никак не смог...
А почему нет? Можно и туда. Я вот только никак не пойму, вы почему так за вайл переживаете? Это же тоже дело привычки (ну или условий оформления кода в проекте). Я помню, что был какой-то программист старой школы, который говорил, что цикл for - избыточный и while может всё. Точно не помню по поводу какого языка, но это было очень давно.
bormand 20.04.2013 09:01 # +1
Да на самом деле не суть. for (; *a; ++a) это известная идиома обхода null-terminated массива. И для ее понимания совсем не важен тип элемента ;)
ntfshard 20.04.2013 22:42 # 0