分享

printf函数调用时进栈的顺序

 WUCANADA 2012-02-20

printf函数调用时进栈的顺序

 


正文


 

————————————–(1)———————————-

# include <stdio.h>

main()

{

int i=1;

printf(”%d  %d  %d”, i ,  i++,  i++);

}

进栈顺序:

1.         i=1;算最后一个i++i=2;将加之前i的值1送入堆栈。

2.         i=2;算倒数第二个i++i=3;将加之前i的值2送入堆栈。

3.         i=3;计算ii=3;将加之前i的值3送入堆栈。

输出结果为(出栈顺序):3 2 1

————————————–(2)———————————-

# include <stdio.h>

main()

{

int i=1;

printf(”%d  %d  %d”, i ,  ++i,  ++i);

}

进栈顺序:

1.         i=1;算最后一个++ii=2;将加之后i的值2送入堆栈。

2.         i=2;算倒数第二个++ii=3;将加之后i的值3送入堆栈。

3.         i=3;计算ii=3;将加之后i的值3送入堆栈。

输出结果为(出栈顺序):3 3 2

————————————–(3)———————————-

# include <stdio.h>

main()

{

int i, j, k; i=1; j=2; k=3;

printf(”%d  %d  %d”, i ,  j,  k);

}

进栈顺序:

1.         k=3;算kk=3;将k的值3送入堆栈。

2.         j=2;算jj=2;将j的值2送入堆栈。

3.         i=1;计算ii=1;将i的值1送入堆栈。

输出结果为(出栈顺序):1 2 3

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多