下面的六个程序片段主要完成这些事情:
- 输出Hello, World
- 混乱C语言的源代码
下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。
hello1.c
1 2 3 4 5 6 7 8 9 10 11 #define _________ }#define ________putchar#define _______ main#define _(a) ________(a);#define ______ _______(){#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)#define _____ __ ___ ____ _________#include_____hello2.c
1 2 3 4 5 6 7 8 9 #includemain(){intx=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++]);}hello3.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include#define __(a)gotoa;#define ___(a)putchar(a);#define _(a,b) ___(a) __(b);main(){ _:__(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)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)u:_('a',a)v:_('o',a)w:_(')',k)x:_('l',c)y:_('\t',g)z:___(0x0)}hello4.c
1 2 3 4 5 6 7 8 9 intn[]={0x48,0x65,0x6C,0x6C,0x6F,0x2C,0x20,0x77,0x6F,0x72,0x6C,0x64,0x21,0x0A,0x00},*m=n;main(n){putchar(*m)!='\0'?main(m++):exit(n++);}hello5.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 main(){inti,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)); i++)printf("%c",n[i]); }hello6.cpp
下面的程序只能由C++的编译器编译(比如:g++)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include#define _(_)putchar(_);intmain(void){inti = 0;_(++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++i)_(++++++++++++++++++++++++++++++++++++++++++++++++++++++++++i)_(++++++++++++++i)_(--++i)_(++++++i)_(--------------------------------------------------------------------------------------------------------------------------------------i)_(------------------------i)_(++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++i)_(----------------i)_(++++++i)_(------------i)_(----------------i)_(--------------------------------------------------------------------------------------------------------------------------------------i)_(----------------------------------------------i)returni;}
这个世界从来都不会缺少另类的东西,人类自然世界如此,计算机世界也一样。编程语言方面,看过本站《6个变态的C语言Hello World程序》的朋友们一定对BT和另类不会陌生,但那都是些小儿科,真正的BT和另类要是从语言级上来完成。让我们来看看其中一个比较另类的语言BrainFuck。看到这个程序语言的名字,请不要以为这是一个搞笑的语言,这是一个“严肃事情”,请大家用“最虔诚的态度”来阅读本文。
BF语言介绍
Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于“绿王八”的原因,这种语言有时被称为brainf**k或brainf***,甚至被简称为BF。这种 语言,是一种按照“Turing complete(完整图灵机)”思想设计的语言,它的主要设计思路是:用最