游侠NETSHOW论坛

标题: 游侠的C语言专家啊,告诉我这代码怎么理解啊? [打印本页]

作者: decic7780    时间: 2012-3-12 14:33:43     标题: 游侠的C语言专家啊,告诉我这代码怎么理解啊?

本帖最后由 decic7780 于 2012-3-12 14:44 编辑

main(){char*a="main(){char*a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}

看了这代码后表示特别蛋疼, 都不知道这是怎么实现的,我知道游侠多专家,告诉我这到底怎么理解吧。


编译运行一下,你就知道这代码的美妙之处。
作者: zhouli520    时间: 2012-3-12 14:36:27

不是c码农 无法解答
作者: eniac_whyt    时间: 2012-3-12 14:38:43

实在看不懂。。。。
作者: lattit    时间: 2012-3-12 14:52:28

显示的内容和源代码一致
作者: MZ精英    时间: 2012-3-12 15:08:44

怎么main中还嵌套一个main函数???少年你确定没抄错吗?
作者: decic7780    时间: 2012-3-12 15:10:17

MZ精英 发表于 2012-3-12 15:08
怎么main中还嵌套一个main函数???少年你确定没抄错吗?

编译运行一下,一切便知,而且还有惊喜。


作者: decic7780    时间: 2012-3-12 15:21:48

侧影方程式 发表于 2012-3-12 15:17
就是输出代码自身啊

就是啊, 这段代码让我着实惊讶,也不知道这到底是怎么回事,到底为什么是输出其本身,我无法理解。
作者: fengdejiyi    时间: 2012-3-12 16:01:22

%c%s%c : 34(双引号),a,34(双引号)
作者: vbsvbs99    时间: 2012-3-12 16:01:39

decic7780 发表于 2012-3-12 15:21
就是啊, 这段代码让我着实惊讶,也不知道这到底是怎么回事,到底为什么是输出其本身,我无法理解。 ...

就算没学过既然知道结果是打印自身那么有点逻辑推理的人也很容易就看出来怎么回事吧。。。。
printf(a,34,a,34);这句话意思很明显
把a中的%c换成34 %s换成a然后打印出来
打印结果就是
main(){char*a=34main(){char*a=%c%s%c;printf(a,34,a,34);}34;printf(a,34,a,34);}  
34对应的符号应该是 " 所以最终结果是
main(){char*a="main(){char*a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}


作者: 偷偷小米    时间: 2012-3-12 16:36:49

游侠一直很强啊,血多防厚,逃命一流,输出强力,cd短暂。




欢迎光临 游侠NETSHOW论坛 (https://game.ali213.net/) Powered by Discuz! X2