【原创】关于printf()打印多个参数时的栈问题
问题背景:
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 )原创,转载请保留文章出处。