6个变态的C语言写的Hello World

C、C++和Java语言
头像
pointer指针
帖子: 3422
注册时间: 2011-02-25 23:23
送出感谢: 0
接收感谢: 1 次

6个变态的C语言写的Hello World

#1

帖子 pointer指针 » 2011-06-12 0:20

:em01
原文:http://cocre.com/?p=914 —— 酷壳

本文仅供朋友们“消遣作乐”,能够看懂是为什么固然不错。看不懂也不必太过认真,如果你要觉得有意思的话,顶顶贴。如果你觉得没什么意思的话,一笑了之。仅供娱乐而已,不必太过认真。

下面的六个程序片段主要完成这些事情:

输出Hello, World
混乱C语言的源代码(加密源代码,嘿嘿)
下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。

hello1.c

代码: 全选

    #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 <stdio.h>
    _____
hello2.c

代码: 全选


    #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++]);
    }
hello3.c

代码: 全选


    #include <stdio.h>
    #define __(a) goto a;
    #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

代码: 全选


    int n[]={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

代码: 全选


    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)); i++) printf("%c",n[i]); }
hello6.cpp

下面的程序只能由C++的编译器编译(比如:g++)

代码: 全选


    #include  <stdio.h>
    #define _(_) putchar(_);
    int main(void){int i = 0;_(
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++i)_(++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++i)_(++++++++++++++
    i)_(--++i)_(++++++i)_(------
    ----------------------------
    ----------------------------
    ----------------------------
    ----------------------------
    ----------------i)_(--------
    ----------------i)_(++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++i)
    _(----------------i)_(++++++
    i)_(------------i)_(--------
    --------i)_(----------------
    ----------------------------
    ----------------------------
    ----------------------------
    ----------------------------
    ------i)_(------------------
    ----------------------------
    i)return i;}
机器学习入门玩家
外语系数学最好的 数学系代码最好的 计算机系英语最好的
头像
pointer指针
帖子: 3422
注册时间: 2011-02-25 23:23
送出感谢: 0
接收感谢: 1 次

Re: 6个变态的C语言写的Hello World

#2

帖子 pointer指针 » 2011-06-12 0:23

感觉写的很有brainf**k的风格 :em01
机器学习入门玩家
外语系数学最好的 数学系代码最好的 计算机系英语最好的
头像
royclark
帖子: 301
注册时间: 2011-05-15 1:01
系统: Debian GNU/Linux sid
送出感谢: 0
接收感谢: 14 次

Re: 6个变态的C语言写的Hello World

#3

帖子 royclark » 2011-06-12 0:25

    上次由 royclark 在 2011-09-01 12:34,总共编辑 1 次。
    头像
    monk
    帖子: 19507
    注册时间: 2010-01-28 10:45
    送出感谢: 6 次
    接收感谢: 33 次

    Re: 6个变态的C语言写的Hello World

    #4

    帖子 monk » 2011-06-12 0:25

    :em01

    *********宁静致远*********
    如果我说的有什么不对,请看签名第一行
    头像
    pointer指针
    帖子: 3422
    注册时间: 2011-02-25 23:23
    送出感谢: 0
    接收感谢: 1 次

    Re: 6个变态的C语言写的Hello World

    #5

    帖子 pointer指针 » 2011-06-12 0:35

    :em01
    差不多吧
    机器学习入门玩家
    外语系数学最好的 数学系代码最好的 计算机系英语最好的
    头像
    remeber
    论坛版主
    帖子: 13005
    注册时间: 2009-01-06 15:18
    来自: 人间
    送出感谢: 1 次
    接收感谢: 22 次

    Re: 6个变态的C语言写的Hello World

    #6

    帖子 remeber » 2011-06-12 8:49

    瞧过。。
    “有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞
    头像
    月下叹逍遥
    论坛版主
    帖子: 33999
    注册时间: 2010-10-07 14:23
    系统: Archdows10
    来自: 某系某星某洲某国某省某市
    送出感谢: 8 次
    接收感谢: 63 次
    联系:

    Re: 6个变态的C语言写的Hello World

    #7

    帖子 月下叹逍遥 » 2011-06-12 8:51

    额……
    心似浮云常自在,意如流水任东西。
    此事背后一定有个天大的咪咪
    广告:
    1、走过路过,不要错过,dropbox网盘2.25G大放送
    py大法好,退C保平安
    java多妖孽,VB本异端
    日诵一千遍,快活似神仙
    头像
    tangboyun
    帖子: 701
    注册时间: 2009-07-25 1:57
    送出感谢: 5 次
    接收感谢: 13 次
    联系:

    Re: 6个变态的C语言写的Hello World

    #8

    帖子 tangboyun » 2011-06-12 10:02

    这几个思路都是一样的,就是一个个字符挨个打印出来。
    不过就代码本身而言,其实没太多值得研究的地方。这方面的话,那本《短码之美》中的许多例子倒更值得推敲些。这里也有些关于位操作的技巧:
    http://graphics.stanford.edu/~seander/bithacks.html
    https://github.com/tangboyun
    http://tangboyun.is-programmer.com/
    提问的智慧————Eric Steven Raymond
    回答的智慧————Andrew Clarke
    吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
    急急急标题什么的,最讨厌了!
    急急复急急,急急何其多,我生待急急,万事急急急。
    头像
    qy117121
    论坛版主
    帖子: 49939
    注册时间: 2007-12-14 13:40
    系统: Winbuntu
    来自: 志虚国乌由市
    送出感谢: 17 次
    接收感谢: 333 次
    联系:

    Re: 6个变态的C语言写的Hello World

    #9

    帖子 qy117121 » 2011-06-12 10:02

    月下叹逍遥 写了:额……
    :em01
    渠月 · QY

    本人只会灌水,不负责回答问题

    无聊可以点一下→ http://u.nu/ubuntu
    头像
    jadeity
    帖子: 687
    注册时间: 2010-10-21 17:55
    送出感谢: 5 次
    接收感谢: 7 次

    Re: 6个变态的C语言写的Hello World

    #10

    帖子 jadeity » 2011-06-12 10:57

    总之,会的还是会,不会的还是不会,木有多大意义
    头像
    qgymib
    帖子: 541
    注册时间: 2010-04-02 16:44
    系统: openSUSE 13.2 x64
    送出感谢: 2 次
    接收感谢: 11 次

    Re: 6个变态的C语言写的Hello World

    #11

    帖子 qgymib » 2011-06-12 11:54

    月下叹逍遥 写了:额……
    正在建设中的个人博客
    头像
    tangboyun
    帖子: 701
    注册时间: 2009-07-25 1:57
    送出感谢: 5 次
    接收感谢: 13 次
    联系:

    Re: 6个变态的C语言写的Hello World

    #12

    帖子 tangboyun » 2011-06-12 13:54

    其实酷壳上文章笑点还是很多的,我发现下面这篇和最近几天那则新闻放在一起很有喜感。
    Windows编程革命简史: http://coolshell.cn/articles/3008.html
    Windows 8将Silverlight和.Net打入冷宫?:http://news.mydrivers.com/1/195/195768.htm
    https://github.com/tangboyun
    http://tangboyun.is-programmer.com/
    提问的智慧————Eric Steven Raymond
    回答的智慧————Andrew Clarke
    吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
    急急急标题什么的,最讨厌了!
    急急复急急,急急何其多,我生待急急,万事急急急。
    dapeng2010
    帖子: 26
    注册时间: 2010-07-11 10:28
    送出感谢: 0
    接收感谢: 0

    Re: 6个变态的C语言写的Hello World

    #14

    帖子 dapeng2010 » 2011-06-14 12:38

    :em05
    头像
    SmallV
    论坛版主
    帖子: 9016
    注册时间: 2011-01-26 17:52
    来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥
    送出感谢: 0
    接收感谢: 0

    Re: 6个变态的C语言写的Hello World

    #15

    帖子 SmallV » 2011-06-14 13:06

    tangboyun 写了:其实酷壳上文章笑点还是很多的,我发现下面这篇和最近几天那则新闻放在一起很有喜感。
    Windows编程革命简史: http://coolshell.cn/articles/3008.html
    Windows 8将Silverlight和.Net打入冷宫?:http://news.mydrivers.com/1/195/195768.htm
    :em09
    Just do it, you will succeed!
    回复

    回到 “C/C++/Java”