鱼C论坛

 找回密码
 立即注册
查看: 6027|回复: 49

[技术交流] 分享:6个变态的C语言Hello World程序

[复制链接]
发表于 2015-5-31 00:11:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 青蛙星 于 2015-5-31 09:29 编辑

跟大家分享一下有趣的东西,记得别哭。hello world的N种写法。
第一个
  1.         #define _________ }
  2.     #define ________ putchar
  3.     #define _______ int main
  4.     #define _(a) ________(a);
  5.     #define ______ _______(){
  6.     #define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
  7.     #define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
  8.     #define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
  9.     #define _____ __ ___ ____ _________
  10.     #include<stdio.h>
  11.     _____
复制代码

第二个
  1. #include<stdio.h>
  2.     int 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.     }
复制代码

第五个
  1. #include<stdio.h>
  2. int main(){int i,n[]={(((1<<1)<<(1<<1)<<(1<<
  3.     1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1
  4.     <<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(
  5.     1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1
  6.     <<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1
  7.     <<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1
  8.     <<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1
  9.     <<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1
  10.     )))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1
  11.     <<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(
  12.     1<<(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<<
  17.     1)<<(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)<< (1
  20.     <<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< (
  21.     1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1)
  22.     <<(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<<(1
  26.     >>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<(
  27.     1>>1))) + (1<< (1>>1)))}; for(i=(1>>1);i
  28.     <(((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1
  29.     ))) + (1<<1)); i++) printf("%c",n[i]); }
复制代码

第六个
  1.     #include <stdio.h>
  2.     #define _(_) putchar(_);
  3.     int main(void){int i = 0;_(
  4.     ++++++++++++++++++++++++++++
  5.     ++++++++++++++++++++++++++++
  6.     ++++++++++++++++++++++++++++
  7.     ++++++++++++++++++++++++++++
  8.     ++++++++++++++++++++++++++++
  9.     ++++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;        }
复制代码

第三个    #include<stdio.h>
    #define __(a) goto a;
    #define ___(a) putchar(a);
    #define _(a,b) ___(a) __(b);
    int 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)}

第四个
  1. #include <stdio.h>
  2. int n[]={0x48,
  3.     0x65,0x6C,0x6C,
  4.     0x6F,0x2C,0x20,
  5.     0x77,0x6F,0x72,
  6.     0x6C,0x64,0x21,
  7.     0x0A,0x00},*m=n;
  8.     int main(int* n){putchar
  9.     (*m)!='\0'?main
  10.     (m++):0;}
复制代码






在VS2010下实测有效。
转自:http://coolshell.cn/articles/914.html
-----------------------------------------------------------------------------------------------------------------------------------------------------
一位网友的讲解
第一个:利用了宏的层层替代,剥离开来就是一个标准的 main(){putchar(‘H’);……putchar(‘!’);}
第二个:利用数组和指针,先对赋值Y[0]=0x48=’H’,Y[1]=Y[0]+0x1D=0x65=’e’依次通过偏移量对数组赋值,组后逐个输出。
第三个:利用goto语言跳转输出。从 __(t)开始,即goto t;t:_(‘H’,j) 即(putchar(‘H’, goto (j)) 依次跳转输出。
第四个:利用函数副作用和条件运算符判断输出。n是数组首地址。m是指针变量,每次自增,最后函数返回数组首地址。
第五个:利用移位(结核性:L-R)对数组赋值:如第一个值((1<<1)<<(1<<1)<<(1<<1)<<(1<>1)))+((1<<1)<<(1<<1))),即((2<<2<<2<<1) + (2<<2))即(8<<2<<1 + 8)= 64<<1 + 8 = 64 + 8 = 72 = 0x48 ='H'.




评分

参与人数 5荣誉 +18 鱼币 +46 贡献 +12 收起 理由
沉思的牛 + 2 + 30 + 1 确实够变态的!
a731062834 + 1 + 1 不错,赞一个!
瞬秒爆加速 + 5 + 5 + 3 支持楼主!
拈花小仙 + 5 + 5 + 3 感谢楼主无私奉献!
freeparty + 5 + 5 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-5-31 04:46:20 | 显示全部楼层
有点意思:lol:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-31 09:31:18 | 显示全部楼层

已更新,之前的因为插入代码功能不完善,导致排版并不是我想要的结果。这次第三,第四的代码已更新。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 11:30:43 | 显示全部楼层
实验成功,虽然不明白怎么做到的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 11:31:12 | 显示全部楼层
对于初学者的我来说,表示完全看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 16:05:37 | 显示全部楼层
好霸气的写法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 16:05:59 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 19:14:38 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-5-31 20:27:24 | 显示全部楼层
真是够变态的写法啊~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 20:49:17 | 显示全部楼层
支持下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 22:38:59 | 显示全部楼层
乱码大赛里面很多这种
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 23:35:24 | 显示全部楼层
太厉害了哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 01:44:31 | 显示全部楼层
还真的是,条条大路捅罗马,脑洞打开
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 07:08:57 | 显示全部楼层
世界的恶意= =
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 09:16:09 | 显示全部楼层
简直是牛逼轰轰
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 09:38:36 | 显示全部楼层
必须支持!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 10:13:27 | 显示全部楼层
路过飘过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 10:34:16 | 显示全部楼层
这还是我第一次看啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 11:57:46 | 显示全部楼层
确实想哭。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-1 12:28:46 | 显示全部楼层

对于初学者的我来说,表示完全看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 22:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表