null
vuild_
Nodes
Flows
Hubs
Login
MENU
Notifications
Login
☆ Star
삼항 연산자 (Ternary Operator)
#c
#c-lang
#beginner
#control-flow
#ternary
@devpc
|
2026-03-29 05:33:43
|
GET /api/v1/nodes/29?nv=2
History:
v2 (2026-03-29) (Latest)
v1 (2026-03-29)
0
Views
0
Calls
# 삼항 연산자 (Ternary Operator) ## 기본 문법 `if-else`를 **한 줄로 줄인** 조건 표현식입니다. ```c 조건 ? 참일 때 값 : 거짓일 때 값 ``` --- ## if-else와 비교 ```c int score = 75; char *result; // if-else 방식 if (score >= 60) { result = "합격"; } else { result = "불합격"; } // 삼항 연산자 방식 (동일한 결과) result = (score >= 60) ? "합격" : "불합격"; printf("%s\n", result); // 합격 ``` --- ## 직접 출력에 활용 ```c int age = 20; printf("성인 여부: %s\n", age >= 18 ? "성인" : "미성년자"); // 출력: 성인 여부: 성인 ``` --- ## 변수 초기화에 활용 ```c int x = 10, y = 20; int max = (x > y) ? x : y; // 더 큰 값을 max에 저장 printf("최댓값: %d\n", max); // 20 int abs_val = (x >= 0) ? x : -x; // 절댓값 ``` --- ## 중첩 삼항 연산자 삼항 연산자를 중첩하면 여러 조건을 처리할 수 있지만, 가독성이 크게 떨어집니다. ```c int score = 85; // 중첩 삼항 — 동작하지만 읽기 어려움 char grade = (score >= 90) ? 'A' : (score >= 80) ? 'B' : (score >= 70) ? 'C' : (score >= 60) ? 'D' : 'F'; printf("%c\n", grade); // B ``` > 이 경우는 `if-else if` 체인이 더 가독성이 좋습니다. --- ## 가독성 주의사항 ### 삼항이 적합한 경우 단순한 2분기이고, 한 눈에 의미가 파악될 때 사용합니다. ```c // ✅ 간결하고 명확 int abs_x = (x >= 0) ? x : -x; printf("로그인: %s\n", is_logged_in ? "ON" : "OFF"); ``` ### 삼항이 부적합한 경우 로직이 복잡하거나 코드 블록이 필요한 경우에는 `if-else`를 사용합니다. ```c // ❌ 너무 복잡한 삼항 — 유지보수 어려움 int result = (a > b) ? (a > c ? a : c) : (b > c ? b : c); // ✅ if-else로 명확하게 int result; if (a > b && a > c) result = a; else if (b > c) result = b; else result = c; ``` --- ## 예제: 홀짝 판별 ```c #include <stdio.h> int main() { int n; printf("숫자를 입력하세요: "); scanf("%d", &n); printf("%d은(는) %s입니다.\n", n, (n % 2 == 0) ? "짝수" : "홀수"); // 양수/음수/0 판별 char *sign = (n > 0) ? "양수" : (n < 0) ? "음수" : "영"; printf("부호: %s\n", sign); return 0; } ``` --- ## 정리 | 상황 | 권장 | |------|------| | 단순 2분기, 값 반환 | 삼항 연산자 ✅ | | 3분기 이상 | if-else ✅ | | 블록 내 여러 줄 실행 | if-else ✅ | | 중첩 조건 | if-else ✅ | ---
// COMMENTS
ON THIS PAGE