在网上看到这篇介绍混乱C语言的文章!展现了程序员幽默的一面,细细体会挺有意思的!哈哈,写在这自己收藏了!(后面是一片实现混乱C的教程,教你如何将自己的代码写的自己都看着晕,哈哈哈)
![](https://upload-images.jianshu.io/upload_images/24563956-b2bc45774f6cf7e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
下面的六个程序片段主要完成这些事情:
输出Hello, World
混乱C语言的源代码
下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。
hello1.c
![](https://upload-images.jianshu.io/upload_images/24563956-d3233afbcd97d334.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
hello2.c
![](https://upload-images.jianshu.io/upload_images/24563956-e6795dbbd0be8514.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
hello3.c
![](https://upload-images.jianshu.io/upload_images/24563956-2e7e7d717891d35e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
hello4.c
![](https://upload-images.jianshu.io/upload_images/24563956-4dfb404fc033c1d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
hello5.c
![](https://upload-images.jianshu.io/upload_images/24563956-b59a882129ac1d5e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
hello6.cpp
下面的程序只能由C++的编译器编译(比如:g++)
![](https://upload-images.jianshu.io/upload_images/24563956-95f74ffbe8ad42fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
下面是一个Step by Step的教程,教你如何把一个清晰的代码变得复杂难懂的。当然,这只是一个“简明教程”了。还是那句话——“本文仅供朋友们“消遣作乐”,如果你要觉得有意思的话,顶个贴。如果你觉得没什么意思的话,一笑了之。仅供娱乐而已,不必太过认真。”
开始程序
下面是一个找出素数的程序:
![](https://upload-images.jianshu.io/upload_images/24563956-d438aa4fa9807668.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
下面我们来看看如何把上面这段代码搞得复杂难懂。
第一步、把for变成while
通常来说,for循坏要以while循坏简单一些,上面的程序有二重for循环,我们不但要把其变成while循环,而且还要把二重循环的变成一重的循环,然后使用大量的if-else语句来判断。
![](https://upload-images.jianshu.io/upload_images/24563956-3748c319d2ba3581.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第二步,把循坏变成递归
递归在某些时候是可以把代码变得简单,但大多数的情况下是把代码变得复杂,而且很没有效率。下面是把上面的while循环变成了递归。变成了递归后,函数的参数都变成3个了。
![](https://upload-images.jianshu.io/upload_images/24563956-93f9257e764c5a41.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第三步,弄乱代码结构/使用没有含义的变量名
关于如何弄乱代码结构,其中一个小技巧是,使用“?”表达式代替if-else语句。
![](https://upload-images.jianshu.io/upload_images/24563956-e9867b3407445745.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第四步,取消临时变量
临时变量一般用来保存反复使用的一个表达式的值。使用大量重复的表达式来取消这些临时变量的也可以让代码复杂起来。
![](https://upload-images.jianshu.io/upload_images/24563956-49a49510dc5d7f5c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第五步,继续弄乱变量名
我们知道,下划线是合法的变量名,所以,我们不妨用__,___,____来代替m,t,c。函数名也可以使用下划线来代替。让我们来看看求素数的函数能变成什么。
![](https://upload-images.jianshu.io/upload_images/24563956-a1495e38b5bd1b4a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第六步,移除常量
在上面的程序中,还有一些常量,你可以通过增加一个宏定义,或是增加一个函数的形参来取代这一常量。
![](https://upload-images.jianshu.io/upload_images/24563956-1285486d964ed86d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
程序到这里应该差不多了。还是那句话——“每一个程序员都有把源代码弄复杂的潜质”,大家耗子尾汁。
以上就是我的分享,有什么问题欢迎大家评论区留言。
![](https://upload-images.jianshu.io/upload_images/24563956-9bd052ad0b8f7df3.gif?imageMogr2/auto-orient/strip)
最后,如果你也想成为程序员,想要快速掌握编程,赶紧加入学习企鹅圈子!
里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”
编程学习书籍:
![](https://upload-images.jianshu.io/upload_images/24563956-178bd2e18b5d99bc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
编程学习视频:
![](https://upload-images.jianshu.io/upload_images/24563956-884a3bf8b90c7e6b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)