一些有趣的代码
张文泰
posted @ 2010年1月31日 20:50
in Tiny Tricks
with tags
代码
, 3262 阅读
比如,下面这几个可以输出自己的程序:
class S{public static void main(String[]a){String s="class S{public static void main(String[]a){String s=;char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}";char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}
char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(s,34,s,34);}
#define q(k)main(){return!puts(#k"\nq("#k")");} q(#define q(k)main(){return!puts(#k"\nq("#k")");})
还有用gcc编译输出C,g++编译输出C++的程序:
#include <stdio.h> int main() { putchar('C'); #ifdef __cplusplus putchar('+'); putchar('+'); #endif return 0; }
下面的程序输出一个雪花曲线,看起来很像Java,但是却是C:
/* * Sun's Java is often touted as being "portable", even though my code won't * suddenly become uber-portable if it's in Java. Truth is, Java's one of * the most ugly, slow, and straitjacketed languages ever. It's popular * mainly because people hear the word "portable" and go "ewww". * * This program, then, is dedicated to bringing about the death of Java. We * good coders have been oppressed for too long by the lame language * decisions of pointy-haired bosses and academics who should know better. * It's time we stand up against this junk, and bring back the fun in * programming! Viva La Revolution! */ #define aSet c #define BufferedReader(x)1 #define byte Y[I][_^1]?do(:):_&1?do(.):do(`):8;++y;} #define class int N=0,_,O=328,l=192,y=4,Y[80][64]={0},I;struct #define do(c)a(#c "\b") #define err c,c #define getAllStrings(x));q() #define if(x)b(#x) #define IOException #define line c #define main(a)b(char*x){write(1,"\033[",2),null}main() #define new #define null a(x);}a(char*x){write(1,x,strlen(x));try;try;try;try; #define out c,c #define println(x)c #define private int d(int #define public short c;}c;typedef int BufferedReader;char*F="JF>:>FB;;BII"; #define return {return #define static f(x){N=(N+x)%6,y--?f(0),f(1),f(4),f(1):++Y[(I=O+N[F]-66) #define String #define System c #define this if(D):1,O=I,I/=16,l<_/32?if(B):l>_/32?if(A):2,l=_,_/=16,byte #define throws #define toArray(x)c #define try for(;--c.c;) #define void /16][(_=l+N[6+F]-66)/16]?O/=16,l/=32,O<I/16?if(C):O>I/16?this #define while(k)if(2J),if(7;21H),f(0),f(4),f(4),if(H),/* import java.io.*; import java.util.*; /** * A lame Java program. * @author J. Random Worker */ class LameJavaApp { /** The infamous Long-Winded Signature From Hell. */ public static void main(String[] args) throws IOException { /* Don't get me started on this. */ BufferedReader reader = new BufferedReader(new FileReader(args[0])); /* What, this long incantation just to print a string? */ System.err.println("Hello world!"); /* At least this is sane. */ String line; while ((line = reader.readLine()) != null) System.out.println(line.length()); } /** * Method with a needlessly long name. * @param aSet a set (!) */ private String[] getAllStrings(Set<String> aSet) { /* * This dance is needed even in J2SE 5, which has type * templates. It was worse before that. */ return aSet.toArray(new String[0]); } }
本作品遵循“署名-非商业性使用-相同方式共享 3.0 Unported”协议,转载请注明来自richard-desktop。