在C语言或C++笔试题中常遇到判断printf输出值的问题,看似很简单,但却是考察函数参数的入栈问题。例如:
#include <iostream>
int main()
{
int a = 10;
printf("%d %d %d", a--, a, a--);
return 0;
}
输出结果:
函数参数从右向左入栈,先执行右边第一个表达式a--, 然后执行右边第二个表达式 a--,所以printf参数为:printf("%d %d %d", 9, 8, 10);
在C语言或C++笔试题中常遇到判断printf输出值的问题,看似很简单,但却是考察函数参数的入栈问题。例如:
#include <iostream>
int main()
{
int a = 10;
printf("%d %d %d", a--, a, a--);
return 0;
}
输出结果:
函数参数从右向左入栈,先执行右边第一个表达式a--, 然后执行右边第二个表达式 a--,所以printf参数为:printf("%d %d %d", 9, 8, 10);