《游戏编程精髓3》前言中有一个小程序,很有意思,但是看不懂是为什么,大家帮忙解释一下

anjiao_1989 2011-07-21 10:08:50
#include <stdio.h>

main(k)
{
float i, j, r, x, y = -16;
while(puts(" "), y++ < 15)
for(x = 0; x++ < 84; putchar(" .:-;!/>)|&IH%*#"[k&15]))
for(i = k = r = 0; j = r * 4 - i * i - 2 + x / 25, i = 2 * r * i + y / 10, j * j + i * i < 11 && k++ < 111; r = j);

getchar();
}

运行结果
.............................................:::::::::::::::::::....................
...........................................::::::::::::::::::::::...................
..........................................:::::::::::::::::::::::...................
........................................::::::::::::::::::::::::::..................
.......................................:::::::::::::::----::::::::..................
......................................::::::::::::::------::::::::..................
.....................................::::::::::::::------:::::::::..................
....................................:::::::::::::----;;--:::::::::..................
...................................:::::::::::::----;;--::::::::::..................
...................................:::::::::::::---;;--:::::::::::..................
..................................:::::::::::::---;;---:::::::::::..................
..................................::::::::::::---;/;--::::::::::::..................
.................................:::::::::::::---;;---::::::::::::..................
.................................:::::::::::::---;;---::::::::::::..................
.................................:::::::::::::---!;--:::::::::::::..................
.................................:::::::::::::--- ---:::::::::::::..................
.................................:::::::::::::---!;--:::::::::::::..................
.................................:::::::::::::---;;---::::::::::::..................
.................................:::::::::::::---;;---::::::::::::..................
..................................::::::::::::---;/;--::::::::::::..................
..................................:::::::::::::---;;---:::::::::::..................
...................................:::::::::::::---;;--:::::::::::..................
...................................:::::::::::::----;;--::::::::::..................
....................................:::::::::::::----;;--:::::::::..................
.....................................::::::::::::::------:::::::::..................
......................................::::::::::::::------::::::::..................
.......................................:::::::::::::::----::::::::..................
........................................::::::::::::::::::::::::::..................
..........................................:::::::::::::::::::::::...................
...........................................::::::::::::::::::::::...................
.............................................:::::::::::::::::::....................
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
anjiao_1989 2011-07-21
  • 打赏
  • 举报
回复
还是我自己说一下吧!
这段代码只能在C下通过编译。

在C中有默认int类型规则,所以main(k)相当于int main(int k),k值一般为1
while(puts(" "), y++ < 15) 中puts(" ")相当于printf("\n")用于换行,这样写结构紧凑一些吧
putchar(" .:-;!/>)|&IH%*#"[k&15]) 相当于char * str = " .:-;!/>)|&IH%*#"; char c = str[k&15]; putchar(c);

上面这些东西都比较简单,仔细看都能看出来。c++用惯了,这种代码初次看有点头晕,以为通过不了编译,但是通过了,很奇怪,所以拿出来问问。下面的for循环比较复杂,像是个方程,数学不好,不研究了。
赵4老师 2011-07-21
  • 打赏
  • 举报
回复
不要写连自己也预测不了结果的代码!
一桶姜山 2011-07-21
  • 打赏
  • 举报
回复
在把诸如常量 84 换成 (3*7)*(1+(1*2)+1),把x等等的变量换成 jalg9u923aklskj1232什么的,把所有回车去掉然后以每行10个字符用\连接起来
那么这个代码不用运行看起来就有其运行结果的效果了
wesweeky 2011-07-21
  • 打赏
  • 举报
回复
我觉得这种东西很蛋疼 不要研究了
至善者善之敌 2011-07-21
  • 打赏
  • 举报
回复
for(x = 0; x++ < 84; putchar(" .:-;!/>)|&IH%*#"[k&15]))

这种代码一看就晕。。
  • 打赏
  • 举报
回复
纯粹炫耀技巧的东西
intermilanzhu 2011-07-21
  • 打赏
  • 举报
回复
晕了晕了!!!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧