我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 老帖子里面翻出的问题 看不懂 请教下 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

kenneygf



性别: 帅哥 状态: 该用户目前不在线
头衔: 星星在眨眼~
等级: 前途无量
发贴: 6207
威望: 0
浮云: 1131
在线等级:
注册时间: 2004-05-22
最后登陆: 2009-07-12

5come5帮你背单词 [ inorganic /ino:'gænik/ a. 无机的,无生物的 ]


老帖子里面翻出的问题 看不懂 请教下

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

谁来解释下这段代码

结果就是输出程序本身
顶端 Posted: 2006-12-28 09:51 | [楼 主]
kenneygf



性别: 帅哥 状态: 该用户目前不在线
头衔: 星星在眨眼~
等级: 前途无量
发贴: 6207
威望: 0
浮云: 1131
在线等级:
注册时间: 2004-05-22
最后登陆: 2009-07-12

5come5帮你背单词 [ polymer /'polimə/ n. 聚合物 ]


即使''的assii码是34
printf(a,34,a,34);也是printf(a,"a");这个依然还是不懂
顶端 Posted: 2006-12-28 15:54 | [1 楼]
albert





性别: 保密 状态: 该用户目前不在线
等级: 栋梁之材
家族: 唯war独尊
发贴: 634
威望: 0
浮云: 1116
在线等级:
注册时间: 2005-10-04
最后登陆: 2012-02-12

5come5帮你背单词 [ standardize /'stændədaiz/ vt. 使标准化 ]


LZ注意printf中第一个a是一个字符串,而第二个a代表的是第一个a中的%s


也就是说:程序在执行printf时当看到第一个a,在屏幕上显示a字符串的内容
void main(){char* a=;
此时遇到控制符%c,按printf的第二个参数34显示字符"此时屏幕上显示为void main(){char* a=";
然后遇到控制符%s,将第3个参数a的内容显示在屏幕上,此时屏幕内容为void main(){char* a="void main(){char* a=%c%s%c;printf(a,34,a,34);};
禁接着又遇到控制符%c,按printf的第四个参数34显示字符",此时屏幕显示为void main(){char* a="void main(){char* a=%c%s%c;printf(a,34,a,34);}";
最后将剩下的字符;printf(a,34,a,34);}显示完,最终在屏幕上显示即为:
void main(){char* a="void main(){char* a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}


[ 此贴被albert在2006-12-28 17:54重新编辑 ]
顶端 Posted: 2006-12-28 17:42 | [2 楼]
kenneygf



性别: 帅哥 状态: 该用户目前不在线
头衔: 星星在眨眼~
等级: 前途无量
发贴: 6207
威望: 0
浮云: 1131
在线等级:
注册时间: 2004-05-22
最后登陆: 2009-07-12

5come5帮你背单词 [ leopard /'lepəd/ n. 豹 ]


Quote:
引用第2楼albert于2006-12-28 17:42发表的:
LZ注意printf中第一个a是一个字符串,而第二个a代表的是第一个a中的%s


也就是说:程序在执行printf时当看到第一个a,在屏幕上显示a字符串的内容
void main(){char* a=;
.......

明白了哈~

thx
顶端 Posted: 2006-12-28 19:31 | [3 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.009770(s) query 5, Time now is:11-23 21:43, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号