1 #include<iostream> 2 3 int a = 5; 4 int fun() 5 { 6 a = 10; 7 return 8; 8 } 9 10 int main() 11 { 12 std::cout << fun()<<' '<< a << std::endl; 13 return 0; 14 }
上述代码的输出结果为什么是8 5??
把第12行改成
std::cout << a<<' '<< fun() << std::endl;
结果输出就是10 8
把第12行改成
std::cout << fun() << std::endl;
std::cout << a << std::endl;
结果输出就是8 10
c++函数的参数是从右向左传入的:
std::cout << fun()<<' '<< a << std::endl;首先传人a输出a=5,fun()计算的是8 结果是8,5
std::cout << a<<' '<< fun() << std::endl;首先传人fun()输出8,a变为10了,输出结果为10,8
std::cout << fun() << std::endl; std::cout << a << std::endl;其实就是输出fun()--8,a的值变为10后面输出a-10
结果为8 10,你明白函数的参数传人顺序就明白了,是从右向左
术语:函数参数的入栈顺序为自右向左,你的输出是自左向右的