c 语言程序复杂,你见过或写过的最复杂的 C 语言程序是?

原标题:你见过或写过的最复杂的 C 语言程序是?

(点击上方公号,可快速关注)

来自:伯乐小组

链接:http://group.jobbole.com/9907/

来自 Quora 的一个讨论帖,题主说了:

如果是单行代码,必须是那种实用的,不是混淆或令人费解的那种。比如:while (*n++=*i++) ; (← 看懂的童鞋可在评论中解释)

我想再找些更为复杂的程序。当然了,① 不是叫你发那种调用很多函数才能返回结果的;② 我想看单行代码几乎就完成所有工作的例子。

Hayri Uğur Koltuk 推荐了《毁灭战士 3》中用到的平方根倒数速算法的代码:

floatQ_rsqrt(floatnumber)

{

longi;

floatx2,y;

constfloatthreehalfs=1.5F;

x2=number*0.5F;

y=number;i= *(long*)&y;// evil floating point bit level hacking

i=0x5f3759df-(i>>1);// what the fuck?

y= *(float*)&i;y=y*(threehalfs-(x2*y*y));// 1st iteration

// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed

returny;

}

看第 8 行高亮的那句!0x5f3759df !

【2015-10-29 更新】

Pierre Raii 童鞋有一天在学校经过系主任办公室时,看到门上贴了一张纸,说 C 语言没那么难

void(*(*f[])())()

72855fd5d9607e6878def13ff82cd694.png

图上有英文解释,看懂的童鞋可翻译或解释一下。

Jefferson Steelflex 提醒说:

如果有人觉得这个声明很费解,去查查指针的右左规则(right-left rule)。

【2015-10-29 更新】

Eric Wadsworth 推荐的是:

我有位前同事是在 NASA 工作,做流体动力学模拟。他曾经遇到一个 Bug,团队追踪就花了整整三个礼拜。他给我展示了 C 代码,其中有一行类似这样的:

c = ******a;

Stephan Froede 说自己也遇到过类似的

char ****************a;

记不清有多少 * ,并且还没有注释,他称之为来自地狱的代码,哈哈。

伯乐小组站内评论摘选

YuHao

一种快速的把double类型的整数转成int的神奇方法,应该算吧: http://stackoverflow.com/q/17035464/1009479 , 也有一个magic number: 6755399441055744.0 , 在Lua源码里见到的.

从 void (*(*f[])())() 看不出 f 是什么类型的,可收藏 http://cdecl.org/ ,你不会后悔的。(手动解析 规则是从右向左,从里到外,C++基本同理,语法比C更复杂)

Ace

照片中的行代码:void (*(*f[])())()

定义 f 是一个未指定大小的指针数组,数组中的指针指向 { 返回[ 指向(返回值为空的函数)的指针] 的函数}

是这个意思吧?

关注「CPP开发者」

看更多精选C/C++技术文章

责任编辑:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值