如何理解main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);34;}",34);}

如何理解

main(a)

{

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

}



首先

c语言中printf()的一般格式为


printf(格式控制字符串);


printf(格式控制字符串,输出值参数表);


其次


printf参数进栈顺序是从右向左,也就相当于按下面的顺序执行4个语句:


1.34;
2.a="main(a){printf(a,34,a=%c%s%c,34);34;}"

3.34;

4.a;(a已在第二步被赋值为"main(a){printf(a,34,a=%c%s%c,34);34;}")

扫描二维码关注公众号,回复: 949934 查看本文章


此时,结构就很清晰了。

第一个a就是格式控制字符串,其中%c%s%c分别对应后面三个参数:34(ASCII码为34的字符为"),"main(a){printf(a,34,a="%c%s%c,34);34;}"这么一个字符串,34。



猜你喜欢

转载自blog.csdn.net/sj_wl/article/details/63262753
34