일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- C언어 변수
- 역순
- Naver SmartEditor
- Spring email
- 텍스트 파일 읽기
- URL 다운로드
- C언어 함수
- SQL
- C언어 메모리
- 포인터
- jsp
- C언어 매크로
- placehoder
- 오라클
- 구글 reCaptcha
- HTML5
- C언어 파일입출력
- C언어 배열
- TCP/IP 소켓
- 날짜
- 자바
- Oracle
- GUI
- C언어
- Vim
- java
- Google reCaptcha
- Spring google
- gcc
- C언어 구조체
- Today
- Total
easy software
C언어 #define - 삼항연산자를 매크로 함수로 작성하기 본문
#define 지시자를 이용한 매크로를 작성할때,
매크로 몸체에 각종 연산자 및 띄어쓰기도 올 수 있습니다.
그러면 제목대로 삼항연산자를 포함한 매크로를 작성해 보겠습니다.
#include <stdio.h>
//크기를 비교해주는 매크로 함수
#define MAX(x, y) x > y ? x : y
int main(void){
int a, b;
printf("같은 값은 비교할 수 없습니다. \n");
printf("두 개의 정수 입력 : ");
scanf_s("%d %d", &a, &b);
printf("%d이(가) 더 큰 수입니다. \n", MAX(a, b));
return 0;
}
위의 코드는 사용자가 두개의 정수를 입력하면, 큰 값을 출력해주는 프로그램입니다.
작성된 매크로를 보면 매크로몸체가 삼항연산자로 작성되어 있습니다.
삼항 연산자란, 조건 ? 참일때 : 거짓일때 를 반환하는 연산입니다.
즉, 위의 MAX함수는 x가 크면 x를 반환하고, y가 크면 y를 반환하게 됩니다.
그리고 매크로체에서는 띄어쓰기도 포함하고 있습니다.
위의 코드를 전처리기가 전처리하게 되면 아래와 같은 코드가 됩니다.
int main(void){
int a, b;
printf("같은 값은 비교할 수 없습니다. \n");
printf("두 개의 정수 입력 : ");
scanf_s("%d %d", &a, &b);
printf("%d이(가) 더 큰 수입니다. \n", x > y ? x : y);
return 0;
}
이처럼 삼항 연산자도 매크로의 몸체로 올 수 있음을 기억합시다.
'C언어 > 매크로와 전처리기(preprocessor)' 카테고리의 다른 글
C언어 #define을 이용한 매크로 함수와 매크로 상수 예제 (0) | 2015.02.15 |
---|---|
C언어 매크로 지시자 #define 과 매크로함수 그리고 전처리 (0) | 2015.02.15 |