#include <stdio.h>
#include <process.h>
int n[]={0x48,
0x65,0x6C,0x6C,
0x6F,0x2C,0x20,
0x77,0x6F,0x72,
0x6C,0x64,0x21,
0x0A,0x00},*m=n;
main(int n){putchar
(*m)!='/0'?main
(*m++):exit(n++);}
#include <stdio.h>
main(){
int x=0,y[14],*z=y;*(z++)=0x48;*(z++)=y[x++]+0x1D;
*(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;
*(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;
*(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;
*(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;
x=*(--z);while(y[x]!=NULL)putchar(y[x++]);
}
#include <stdio.h>
main(){int i,n[]={(((1<<1)<<(1<<1)<<(1<<
1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1
<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(
1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1
<<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1
<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1
<<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1
<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1
)))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1
<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(
1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1
)<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1)))
-((1<<1)<<(1<<(1>>1)))),((1<<1)<< (1<<1)
<<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<<
1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<<
1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1
<<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1
)<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1
<<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< (
1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1)
<<(1<<(1>>1)))-((1<<1) <<(1<< (1>>1)))),
(((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1
<<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>>
1)))), (((1<<1)<<(1<<1) <<(1<<1))+(1<<(1
>>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<(
1>>1))) + (1<< (1>>1)))}; for(i=(1>>1);i
<(((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1
))) + (1<<1))-1; i++) printf("%c",n[i]); }
---------------------------------------------------------------------------------------------------------------
代码分析如下:
第一个:
#include <stdio.h>
main(){ putchar(0x48); putchar(0x65); _(0x6C)_(0x6C) _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F) _(0x72)_(0x6C)_(0x64)_(0x21)_(0x0a) }
第二个:
//初始化第一个H,然后以后加或减得到下一个字符串
#include <stdio.h>
main(){
int x=0,y[14],*z=y;
*(z++)=0x48;//'H'
*(z++)=y[x++]+0x1D;//'e'
*(z++)=y[x++]+0x07;
*(z++)=y[x++]+0x00;
*(z++)=y[x++]+0x03;
*(z++)=y[x++]-0x43;
*(z++)=y[x++]-0x0C;
*(z++)=y[x++]+0x57;
*(z++)=y[x++]-0x08;
*(z++)=y[x++]+0x03;
*(z++)=y[x++]-0x06;
*(z++)=y[x++]-0x08;
*(z++)=y[x++]-0x43;
*(z++)=y[x]-0x21;
x=*(--z);//x = 0 即 *(z++)=y[x]-0x21
while(y[x]!=NULL)putchar(y[x++]);
}
第三个:
#include <stdio.h>
#define __(a) goto a;
#define ___(a) putchar(a);
#define _(a,b) putchar(a); goto b;
main()
{
_://_ 是一个标记
goto t;
a:
_('r',g)
b:
_('$',p)
c:
_('l',f)
d:
_(' ',s)
e:
_('a',s)
f:
_('o',q)
g:
_('l',h)
h:
_('d',n)
i:
_('e',w)
j:
//_('e',x)
putchar('e'); goto x;
k:
_('/n',z)
l:
_('H',l)
m:
_('X',i)
n:
_('!',k)
o:
_('z',q)
p:
_('q',b)
q:
_(',',d)
r:
_('i',l)
s:
_('w',v)
t:
//_('H',j)
putchar('H'); goto j;
u:
_('a',a)
v:
_('o',a)
w:
_(')',k)
x:
_('l',c)
y:
_('/t',g)
z:
putchar(0);
}
第4个:
//递归输出n,即 "Hello, world!"
#include <stdio.h>
#include <process.h>
int n[]={0x48,
0x65,0x6C,0x6C,
0x6F,0x2C,0x20,
0x77,0x6F,0x72,
0x6C,0x64,0x21,
0x0A,0x00},
*m=n;
main(int n)
{
//putchar(*m)!='/0'? main(*m++): exit(n++);
putchar(*m);
if(*m != '/0')
{
main(*m++);
}
else
{
exit(n++);
}
}
第5个:
#include <stdio.h>
#include <string.h>
main(){
int i,
n[]={(((1<<1)<<(1<<1)<<(1<<1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))),//'H'
(((1<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(
1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1
<<(1>>1))),//'e'
(((1<<1)<<(1<<1)<<(1<<1)<< (1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1//'l'
<<1)<<(1<<(1>>1)))),
(((1<<1)<<(1<<1)<<(1
<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1
)))-((1<<1)<<(1<<(1>>1)))),
(((1<<1)<< (1
<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(
1<<(1>>1)))-(1<<(1>>1))),
(((1<<1)<<(1<<1)<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1)))
-((1<<1)<<(1<<(1>>1)))),
((1<<1)<< (1<<1)<<(1<<1)),
(((1<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1))-(1<<(1>>1))),
(((1<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1
<<1)<<(1<<(1>>1)))-(1<<(1>>1))),
(((1<<1)<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1
<<1)<<(1<<(1>>1)))+(1<<1)),
(((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1)
<<(1<<(1>>1)))-((1<<1) <<(1<< (1>>1)))),
(((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1
<<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>>1)))),
(((1<<1)<<(1<<1) <<(1<<1))+(1<<(1>>1))),
(((1<<1)<<(1<<1))+((1<<1)<< (1<<(1>>1))) + (1<< (1>>1)))//回车键
};
int m = (((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1))) + (1<<1));//14
for(i=(1>>1); i<m-1; i++) //for(i = 0; i < 14 - 1, i++) // 14 - 1是因为回车后,字符都没有了
{
printf("%c",n[i]);
}
}
第6个:
#include <stdio.h>
int main(void){
int i = 0;
putchar(++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++i);//i == 'H'
putchar(++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++i);// i == 'e'
putchar(++++++++++++++i);//i == 'l'
putchar(--++i);
putchar(++++++i);
putchar(------
----------------------------
----------------------------
----------------------------
----------------------------
----------------i);
putchar(------------------------i);
putchar(++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
++++++++++++++++++++++++++i);
putchar(----------------i);
putchar(++++++i);
putchar(------------i);
putchar(----------------i);
putchar(----------------
----------------------------
----------------------------
----------------------------
----------------------------
------i);
putchar(------------------
----------------------------i);
return i;
}