#include <stdio.h>main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %dn" ):9:16:t<0?t<-72? main(_,t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r} eKK{nl}'/#;#q#n'}{}#}w'}{}{nl}'/+#n';d}rw' i;# }{nl}!/n{n#'; r{#w'r nc{nl}'/#{l,+'K {rw' iK{;[{nl}'/w#q#n'wk nw' iwk{KK{nl}!/w{%'l##w#' i; :{nl}'/*{q#'ld;r'} {nlwb!/*de}'c ;;{nl'-{}rw}'/+,} ##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' '}# }'+}##(!!/"):t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a+1 ):0<t?main ( 2, 2 , "%s"): *a=='/'|| main(0, main(-61,*a, "!ek;dc i@bK'(q)-[w]*%n+r3#l,{} :nuwloca-O; m .vpbks,fxntdCeghiry"),a+1);}
程序2.1神秘程序
mystery.c
提示:
不良的风格和不良的文档是软件生产和维护代价高昂的两个重要原因 。良好的编程风格能够大大提高程序的可读性 。良好的编程风格的直接结果就是程序更容易正确运行,间接结果是它们更容易维护,这将节省大笔资金成本 。本书的例子程序使用的风格是通过合理使用空格以强调程序的结构 。我在下面列出了这个风格的几个特征,并说明为什么使用它们 。
1.空行用于分隔不同的逻辑代码段,它们是按照功能分段的 。这样,读者一眼就能看到某个逻辑代码段的结束,而不必仔细阅读每行代码来找出它 。
2.if和相关语句的括号是这些语句的一部分,而不是它们所测试的表达式的一部分 。所以,我在括号和表达式之间留下一个空格,使表达式看上去更突出一些 。函数的原型也是如此 。
3.在绝大多数操作符的使用中,中间都隔以空格,这可以使表达式的可读性更佳 。有时,在复杂的表达式中,我会省略空格,这有助于显示子表达式的分组 。
4.嵌套于其他语句的语句将缩进,以显示它们之间的层次 。使用Tab键而不是空格,你可以很容易地将相关联的语句整齐排列 。当整页都是程序代码时,使用足够大的缩进有助于程序匹配部分的定位,只使用两到三个空格是不够的 。
有些人避免使用Tab键,因为他们认为Tab键使语句缩进得太多 。在复杂的函数里,嵌套的层次往往很深,使用较大的Tab缩进意味着在一行内书写语句的空间就很小了 。但是,如果函数确实如此复杂,你最好还是把它分成几个函数,可以使用其他函数来实现原先嵌套太深的部分语句 。
5.绝大部分注释都是成块出现的,这样它们从视觉上在代码中很突出 。读者可以更容易找到和跳过它们 。
6.在函数的定义中,返回类型出现于独立的一行中,而函数的名字则在下一行的起始处 。这样,在寻找函数的定义时,你可以在一行的开始处找到函数的名字 。
在你研究这些代码例时,你还将看到很多其他特征 。其他程序员可以选择他们喜欢的个人风格 。你到底采用这种风格还是选择其他风格其实并不重要,关键是要始终如一地坚持使用同一种合理的风格 。如果你始终保持如一的风格,任何有一定水平的读者都能较为容易地读懂得你的代码 。
2.4 总结一个C程序的源代码保存在一个或多个源文件中,但一个函数只能完整地出现在同一个源文件中 。把相关的函数放在同一个文件内是一种好策略 。每个源文件都分别编译,产生对应的目标文件 。然后,目标文件被链接在一起,形成可执行程序 。编译和最终运行程序的机器有可能相同,也可能不同 。
程序必须载入到内存中才能执行 。在宿主式环境中,这个任务由操作系统完成 。在自由式环境中,程序常常永久存储于ROM中 。经过初始化的静态变量在程序执行前能获得它们的值 。你的程序执行的起点是main函数 。绝大多数环境使用堆栈来存储局部变量和其他数据 。
C编译器所使用的字符集必须包括某些特定的字符 。如果你使用的字符集缺少某些字符,可以使用三字母词来代替 。转义序列使某些无法打印的字符得以表达,例如在程序中包含某些空白字符 。
注释以/*开始,以*/结束,它不允许嵌套 。注释将被预处理器去除 。标识符由字母、数字和下划线组成,但不能以数字开头 。在标识符中,大写字母和小写字母是不一样的 。关键字由系统保留,不能作为标识符使用 。C是一种自由形式的语言 。但是,用清楚的风格来编写程序有助于程序的阅读和维护 。
推荐阅读
- 解密windows系统版本和版本号,深入了解一组简单数字背后的故事
- 聊聊消息中间件的关键特性和问题总结
- 绿茶和菊花茶的功效,菊花茶枸杞子的功效
- 软件架构设计分层模型和构图思考
- 醋和油醋汁哪个热量低 油醋汁热量高么
- 冰岛糯伍的口感和特点,糯伍古树茶特点
- 普洱茶部分作用,普洱茶和皖西黄大茶功效与作用的区别
- 炸鸡用的是面粉还是淀粉 炸鸡粉和淀粉一样吗
- 植物奶油和植脂末的区别 植脂冰淇淋
- 白茶的作用和功效,2,福鼎白茶功效介绍