c++ - std::cout with multi changing variables -
assuming code
int main(){ int i=0, j=0; cout << << " " << f1(&i,&j) << " " << j << endl; cout << << " " << j << endl; } int f1(int *i, int *j){ *i = 20; *j = 30; return 10; }
the result is
20 10 0 20 30
i puzzled why j 0 while correctly shows 20
edit: have read on sequence point still unsure of how explain this. should assume j evaluated first before f1 evaluated hence j 0 , 20?
here thing:
cout << << " " << f1(&i,&j) << " " << j << endl;
if consider right left evaluation, j
0
, printed. then, f1
called , j
value changed 30
. order of evaluation unpredictable
Comments
Post a Comment