#include<iostream>
#include<cstdlib>
using namespace std;
void func(int &x, int a) {
x = abs(x-a);
}
int main()
{
int x = 0;
(func(x, 1), func(x, 2)), func(x, 3);
cout << x << endl;
int y = 0;
func(y, 1), (func(y, 2), func(y, 3));
cout << x << endl;
}
Выход
2
2
По сути, мой вопрос касается порядка выполнения a, (b, c)
и (a, b), c
. Похоже, что оба имеют тот же порядок, что и a, b, c
, выполняются один за другим.
Теперь, думая ,
как оператор, в a, (b, c)
, почему (b, c)
не выполняется первым и выводит 0
как конечный результат?
Я предполагаю, что правило вычисления b @ c в первую очередь, прежде чем вычислять @ (b @ c), не работает с ,
, а круглые скобки не влияют на приоритет, я прав или нет?