Here is a program I found here

#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
  :0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

Since I am new to "C", can anyone explain to me how this program works.

can anyone explain to me how this program works.

Can I? Yes, this program is actually very well known as it was an early winner of the IOCCC. Will I explain it to you? No, IOCCC programs are written by very clever people, and the techniques implemented are virtually useless outside of the contest and often non-portable. As a beginner to C you'd be wise to learn from well written code rather than intentionally bad code.

Edited 5 Years Ago by Narue: n/a

@Narue Thanks for the advice, But I'm curious, what thing makes this program print out a rhyme rather than a compiler error.

I don't think they are non-portable, I compiled them and found a fair amount of success under Code::Blocks 10.05.

what thing makes this program print out a rhyme rather than a compiler error

It's not invalid code[1], just very difficult to read. If you really want to understand it, a good start would be reformatting the code into something more sensible. That alone is a decent exercise, but not one I would recommend for a beginner. As already mentioned, at this point you'll learn more by studying good code than intentionally bad code.

I don't think they are non-portable, I compiled them and found a fair amount of success under Code::Blocks 10.05.

So you tested them on one version of one compiler, had a "fair amount" of success, and have the rocks to say that they're portable? Do you understand what portable means?


[1] Technically it is invalid because it's K&R C rather than standard C (the entry was for the 1988 IOCCC, if I recall correctly). Modern compilers will probably fail to run it even if they don't choke on the pre-standard syntax.

Edited 5 Years Ago by Narue: n/a

Well, I consider the thread as solved. Thanks for the small tidbits of info on the code.

This question has already been answered. Start a new discussion instead.