질문좀 [ 매크로 함수 부분 ]
화이티
#include iostream
#include iomanip
using namespace std;
#define def_sqr(x) ( (x) * (x) );
inline int inl_sqr(int x);
int main
{
int a, b, c;
a = 2;
b = def_sqr(++a);
cout macro : b endl;
a = 2;
b = inl_sqr(++a);
cout inline : b endl;
return 0;
}
inline int inl_sqr(int x)
{
return x * x;
}
결과 :
macro : 16
inline : 9
---------------------------------------------
이렇게 나오는데 매크로 함수로 원래 컴파일시 대입된다는 걸로 알고 있습니다.
그렇게 되면
a = 2;
b = def_sqr(++a); - b = ++a * ++a 이런식으로 될텐데
b = 3 * 4가 되어 12가 출력되는게 맞는게 아닌가요?
이해 한다고 생각하고 있었는데 책에서 출력이 16이라된다니 다시 헤깔리네요.ㅠ
아시는분 자세히 설명좀 해주세요.ㅠ
-
탄성 2026-01-13
++ 연산자는 일반 수학에는 없는 연산자이기때문에 우선순위에 있어서 헷갈리기 쉽습니다.
님도 아시다시피 ++ 연산자는 * 에 우선합니다.
그럼 ++ 연산자 두개가 먼저 계산되고, a 의 값은 4가 됩니다.
그리고 그 다음 연산자인 a * a = 4 * 4 = 16이되는 것입니다.
다시 쓰자면
( ( ++ a ) * ( ++ a ) )
= ( ( a ) * ( ++ a ) ) // 여기서 a == 3
= ( ( a ) * ( a ) )
| 번호 | 제 목 | 글쓴이 | 날짜 |
|---|---|---|---|
| 2752024 | 소숫점 뺄셈 !! ㅠㅜ | 초롬 | 2026-10-20 |
| 2751970 | 자바 게임 만들려는데 부탁드립니다 (1) | 라온제나 | 2026-10-19 |
| 2751908 | 자바스크립트 처리속도를 체크할 수 있는 방법 있나요? (1) | 테이 | 2026-10-19 |
| 2751822 | 그누보드 아이프레임으로 구현했는데 제목 클릭해서 들어가면 푸터가 동동...떠다녀요 | 내꺼하자 | 2026-10-18 |
| 2751790 | 자바 그래픽 관련을 공부하고 싶은데요.. 어디 좋은 사이트나 책 없을까요?? (1) | 큰재 | 2026-10-18 |
| 2751733 | CTF가머죠? (5) | 두동 | 2026-10-17 |
| 2751709 | 배열부분 궁금한 부분이있습니다. | 딸기우유 | 2026-10-17 |
| 2751677 | 포인터 책을 보다가,,, (2) | 동백 | 2026-10-17 |
| 2751648 | 익스플로 버전에 따라서 생기는 공백.. (1) | 모아 | 2026-10-17 |
| 2751623 | DEL 태그의에서 선굵기 및 컬러지정이 가능한가 해서요~ (4) | 비치나 | 2026-10-16 |
| 2751573 | 테마 업로드 에러.. (1) | 꽃 | 2026-10-16 |
| 2751548 | 수학? 물리?? (3) | 찬늘 | 2026-10-16 |
| 2751461 | 상단네비 fixed ie6 핵 해결방안이 있을까요? | 맑다 | 2026-10-15 |
| 2751436 | 레이아웃을 잡고 코딩을 하는데 드림위버에서의 결과와 IE에서 결과가 다르게 나오네요. (3) | 키클 | 2026-10-15 |
| 2751403 | 형들좀도와주세요string compression (1) | 알렉산더 | 2026-10-14 |
| 2751349 | 링크 다운로드하기 | 팬지 | 2026-10-14 |
| 2751295 | c++한번도 손않댄 사람이... | 날위해 | 2026-10-13 |
| 2751267 | 플래시8 사용에서 플레이어 만들었는데요 (1) | 블1랙캣 | 2026-10-13 |
| 2751182 | 회원가입 | 파랑새 | 2026-10-12 |
| 2751152 | 소셜 플러그인 문제입니다. | 얀 | 2026-10-12 |
