#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나오는데
f((a++) > (b) ? (a++) : (b))
a++ 하는 순간 이미 a값 변경됨
a + 5는 함수에 안들어가나요?