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