函数的参数计算有顺序吗?
#include <iostream>- M1 |4 u$ P: v; d3 c. }$ K0 H& ~
+ P; l3 s1 Y7 f6 n+ j4 |
void f(int i, int j) { std::cout<<i<<' '<<j; }4 Y0 ]1 c2 A1 Z/ l4 a) `- d! X" }
1 D7 `3 W6 P% c
int g(int i) {, F. a4 H' `, \% Y( P
return i;
5 R9 B9 f5 f# E+ `- g2 e3 ]}1 U* C2 f4 v1 y, O' M! p0 T
int main() {* F, B$ x1 ^7 d- N. b
int a(1), b(2);
4 x; W' ^+ H- l* g6 M: f f(a+b, ++b);! U" Y" @6 G0 `$ }/ i1 M6 [; L3 Y
std::cout<<"\n";
* e D z9 m/ W, T# U4 ]% e a = 1, b = 2;, I/ M' D) H5 }% m+ Y' Q9 q
f(g(a+b), ++b);
6 q! \& O# ?! A) Q system("pause");
% |+ t1 \, L( s* l1 {3 j}. _- `! R+ O% n2 s# q: g* G, ? N
结果是:
0 y( N A6 O3 G& k% q8 ?4 3
- A! W' }) C6 t- y, }3 38 Y$ E( R9 b6 B6 J
是说明参数中的表达式是交叉计算的?) D6 ^" o; ~2 j8 }
编译器是gcc,我觉得对这个参数的计算好像是"分层"的, 是吗?