#include <iostream>
#define CALL_WITH_MAX(a,b) f((a) > (b) ? (a) : (b))

using namespace std;
void f(int a) {
    cout << a << endl;
}
int main() {
    int a = 5; int b = 0;
    CALL_WITH_MAX(++a, b);
}


이렇게 하면 a가 두번 더해져서 7되는데 왜 그러는 거에요?


#include <iostream>
#define CALL_WITH_MAX(a,b) f((a) > (b) ? (a) : (b))

using namespace std;
void f(int a) {
    cout << a << endl;
}
int main() {
    int a = 5; int b = 0;
    CALL_WITH_MAX(a + 5, b);
}


이렇게 하면 한번만 더해져서 10나오는데