Допуская этот кодстанд :: соиЬ с несколькими изменяющимися переменными
int main(){
int i=0, j=0;
cout << i << " " << f1(&i,&j) << " " << j << endl;
cout << i << " " << j << endl;
}
int f1(int *i, int *j){
*i = 20;
*j = 30;
return 10;
}
В результате
20 10 0
20 30
Я озадачен, почему J будет 0, а я правильно показывает 20
EDIT: я прочитал о последовательности, но я до сих пор не знаю, как это объяснить. Должен ли я предполагать, что j оценивается сначала до того, как f1 оценивается, поэтому j равно 0, а i равно 20?
Порядок оценки в C++ не указан. –
Возможно, это не обман, а связанный: http://stackoverflow.com/questions/9566187/function-parameter-evaluation-order – Tas
[Также был связан (если не дубликат)] (http://stackoverflow.com/questions/ 4176328/неопределенное-поведение-и-последовательность-точка). –