C语言之诗
收藏的一段著名的 C 代码,来自 IOCCC(国际 C 语言混乱代码大赛,The International Obfuscated C Code Contest)1988 年的获奖作品。整个程序长这样:
1 |
|
它能干什么
编译运行,它会唱出《圣诞十二天》(The Twelve Days of Christmas)的全部歌词,从 “On the first day of Christmas my true love gave to me” 一直唱到第十二天。
原理浅析
main自己递归调用自己,参数t当状态机用:不同的 t 区间走不同的逻辑- 那两串乱码字符串是加密的歌词和解码表——第二个字符串
"!ek;dc i@bK'..."其实是一张字符映射表,程序运行时逐字符查表还原出真正的歌词 - 嵌套的三目运算符
?:完全取代了 if/else 和循环
为什么值得看
这是”代码是写给编译器看的还是写给人看的”这个问题的极端答案。它 demonstration 了三目运算符、递归、字符串查表的极限用法。自己写代码别学它,但它能把你对 C 语言表达式的理解拉高一个层次。
完整的解读文章网上有很多,感兴趣可以搜 “IOCCC 1988” 深入研究。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 寰宇体的世界!
评论
GiscusTwikoo
