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

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

kenneygf



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

5come5帮你背单词 [ weigh /wei/ vt. 称…的重量,权衡,认真考虑;vi. 重(若干) ]


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

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帮你背单词 [ thread /θred/ n. 线,细线,思路,线索,螺纹;vt. 穿(针、线等) ]


即使''的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帮你背单词 [ sofa /'səufə/ n. 长沙发 ]


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帮你背单词 [ spouse /spauz/ 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.009415(s) query 5, Time now is:11-23 18:41, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号