一些有趣的代码

张文泰 posted @ 2010年1月31日 20:50 in Tiny Tricks with tags 代码 , 3264 阅读

比如,下面这几个可以输出自己的程序: 

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
Creative Commons License

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter