【原创】关于printf()打印多个参数时的栈问题

blogdaren 2020-12-20 抢沙发 170人次

问题背景:

int main()
{
    int i = 100;

    printf("%d %d\n", i++, i--);

    return 0;
}
对于初学者而言,上面的代码会输出令人疑惑结果:100 99

问题原因:

printf()函数打印多个参数时,参数遵循"先进后出"的栈原则。

问题分析:

1、参数i入栈(i--中的i);

2、计算 i--;

3、此时栈底值为99;

4、参数i入栈(i++中的i);

5、计算i++;

6、此时栈顶的值为100;

7、参数遵循"先进后出"的栈原则,所以栈顶先出,随后栈底,所以最终打印结果为:100 99

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】关于printf()打印多个参数时的栈问题

发表评论:

您的昵称:
电子邮件:
个人主页:

Free Web Hosting