下面的六个程序片段主要完成这些事情:
- 输出Hello, World
- 混乱C语言的源代码
下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。
hello1.c
查看源代码打印帮助01
#define _________ }
02
#define ________
putchar
03
#define _______ main
04
#define _(a) ________(a);
05
#define ______ _______(){
06
#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
07
#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
08
#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
09
#define _____ __ ___ ____ _________
10
#include<stdio.h>
11
_____
hello2.c
查看源代码打印帮助1
#include<stdio.h>
2
main(){
3
int
x=0,y[14],*z=&y;*(z++)=0x48;*(z++)=y[x++]+0x1D;
4
*(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;
5
*(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;
6
*(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;
7
*(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;
8
x=*(--z);
while
(y[x]!=NULL)
putchar
(y[x++]);
9
}
hello3.c
查看源代码打印帮助01
#include<stdio.h>
02
#define __(a)
goto
a;
03
#define ___(a)
putchar
(a);
04
#define _(a,b) ___(a) __(b);
05
main()
06
{ _:__(t)a:_(
'r'
,g)b:_(
'$'
,p)
07
c:_(
'l'
,f)d:_(
' '
,s)e:_(
'a'
,s)
08
f:_(
'o'
,q)g:_(
'l'
,h)h:_(
'd'
,n)
09
i:_(
'e'
,w)j:_(
'e'
,x)k:_(
'\n'
,z)
10
l:_(
'H'
,l)m:_(
'X'
,i)n:_(
'!'
,k)
11
o:_(
'z'
,q)p:_(
'q'
,b)q:_(
','
,d)
12
r:_(
'i'
,l)s:_(
'w'
,v)t:_(
'H'
,j)
13
u:_(
'a'
,a)v:_(
'o'
,a)w:_(
')'
,k)
14
x:_(
'l'
,c)y:_(
'\t'
,g)z:___(0x0)}
hello4.c
查看源代码打印帮助1
int
n[]={0x48,
2
0x65,0x6C,0x6C,
3
0x6F,0x2C,0x20,
4
0x77,0x6F,0x72,
5
0x6C,0x64,0x21,
6
0x0A,0x00},*m=n;
7
main(n){
putchar
8
(*m)!=
'\0'
?main
9
(m++):
exit
(n++);}
hello5.c
查看源代码打印帮助01
main(){
int
i,n[]={(((1<<1)<<(1<<1)<<(1<<
02
1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1
03
<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(
04
1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1
05
<<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1
06
<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1
07
<<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1
08
<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1
09
)))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1
10
<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(
11
1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1
12
)<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1)))
13
-((1<<1)<<(1<<(1>>1)))),((1<<1)<< (1<<1)
14
<<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<<
15
1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<<
16
1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1
17
<<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1
18
)<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1
19
<<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< (
20
1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1)
21
<<(1<<(1>>1)))-((1<<1) <<(1<< (1>>1)))),
22
(((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1
23
<<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>>
24
1)))), (((1<<1)<<(1<<1) <<(1<<1))+(1<<(1
25
>>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<(
26
1>>1))) + (1<< (1>>1)))};
for
(i=(1>>1);i
27
<(((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1
28
))) + (1<<1)); i++)
printf
(
"%c"
,n[i]); }
hello6.cpp
下面的程序只能由C++的编译器编译(比如:g++)
查看源代码打印帮助01
#include <stdio.h>
02
#define _(_)
putchar
(_);
03
int
main(
void
){
int
i = 0;_(
04
++++++++++++++++++++++++++++
05
++++++++++++++++++++++++++++
06
++++++++++++++++++++++++++++
07
++++++++++++++++++++++++++++
08
++++++++++++++++++++++++++++
09
++++i)_(++++++++++++++++++++
10
++++++++++++++++++++++++++++
11
++++++++++i)_(++++++++++++++
12
i)_(--++i)_(++++++i)_(------
13
----------------------------
14
----------------------------
15
----------------------------
16
----------------------------
17
----------------i)_(--------
18
----------------i)_(++++++++
19
++++++++++++++++++++++++++++
20
++++++++++++++++++++++++++++
21
++++++++++++++++++++++++++++
22
++++++++++++++++++++++++++++
23
++++++++++++++++++++++++++++
24
++++++++++++++++++++++++++i)
25
_(----------------i)_(++++++
26
i)_(------------i)_(--------
27
--------i)_(----------------
28
----------------------------
29
----------------------------
30
----------------------------
31
----------------------------
32
------i)_(------------------
33
----------------------------
34
i)
return
i;}
(全文完)