CodeGym /행동 /C# SELF /C#의 삼항 연산자: 간결한 조건과 주의할 점

C#의 삼항 연산자: 간결한 조건과 주의할 점

C# SELF
레벨 3 , 레슨 5
사용 가능

1. 식 vs 명령문

C#에서 모든 명령은 두 가지로 나뉘어: 명령문 (Statement)이랑 (Expression). 명령문은 "실행된다"고 하고, 식은 "계산된다"고 해. 근데 이게 핵심은 아니야.

진짜 차이점: 식은 계산 결과가 있어. 이 결과에는 타입이 있고, 변수에 넣거나 다른 식에서 쓸 수 있어.

예시:

코드 비고
int x;
명령문
(a < 10)
식, 타입은 bool
i++;
식, 타입은 변수 i와 같음
x = 5;
식, 타입은 변수 x와 같음

이게 우리한테 뭐가 좋냐면?

많은 명령문이 사실 식이야(계산 결과가 있음). 예를 들어, 이런 코드도 돼:
int x, y, z;
x = y = z = 1; 	// x = (y = (z = 1));
식의 결과가 필요 없으면 무시해도 돼:
Console.ReadLine();	// 입력 결과 무시

이건 식이 결과 외에도 뭔가 유용한 걸 할 때(예를 들어, 화면에 출력하거나 입력을 읽을 때) 편해.

2. 삼항 연산자

C#에는 특별한 삼항(세 개) 연산자가 있어. 이건 if–else를 짧게 쓴 거랑 비슷해:


조건 ? 식1 : 식2;
삼항 연산자 문법

조건이 참이면 식1이 계산되고, 아니면 식2가 계산돼. 조건 뒤에 ? 쓰고, 두 식은 :로 나눠.

if-else와의 주요 차이점: 삼항 연산자는 식이야, 결과를 변수에 넣거나 다른 식에서 쓸 수 있어.

예를 들어, 두 수 중 최소값을 구해보자:

int a = 2;
int b = 3;
int min = a < b ?  a :  b;

아니면 조건에 따라 변수에 다른 값을 넣을 수도 있어:


int age = 25;
int money;
if (age > 30)
   money = 100;
else
   money = 50;
고전적인 if-else

삼항 연산자로 똑같이 쓰면:


int age = 25;
int money = age > 30 ? 100 : 50;
삼항 연산자 — 간단하게 쓰기

뭐가 더 좋냐면: if-else랑 삼항 연산자 속도는 똑같아. 근데 삼항 연산자는 짧은 조건에 좋아. 한 줄에 안 들어가면 if-else가 더 읽기 편해.

3. 사용 시 주의점

값의 타입
삼항 연산자의 두 가지 경우(<참일 때 값><거짓일 때 값>)는 타입이 같거나 호환돼야 해(예: 둘 다 string이나 둘 다 int).

잘 되는 예:

int a = 10, b = 20;
int max = (a > b) ? a : b; // 둘 다 int

컴파일 에러 예:

int a = 10, b = 20;
// string이랑 int는 호환 안 됨
string result = (a > b) ? "더 큼" : 0; // 컴파일 에러

올바른 예:

int a = 10, b = 20;
string result = (a > b) ? "더 큼" : "작거나 같음";

예시: 숫자 다루기

int number = -5;
int abs = (number >= 0) ? number : -number;
Console.WriteLine(abs); // 5

4. 삼항 연산자를 앱에 넣기

간단한 대화형 앱을 만들어보자: 인사도 하고, 내년에 몇 살 될지 알려주고, 성인인지도 말해주는 프로그램이야.

Console.Write("이름을 입력하세요: ");
string name = Console.ReadLine();

Console.Write("나이를 입력하세요: ");
string ageText = Console.ReadLine();
int age = int.Parse(ageText);

int nextYear = age + 1;
string status = (nextYear >= 18) ? "성인" : "미성년자";

Console.WriteLine($"안녕, {name}! 내년에 너는 {nextYear}살이야. 너는 {status}야.");

설명:

  • status 변수는 삼항 연산자로 계산돼: 내년 나이가 18 이상이면 성인(아니면 미성년자).
  • 삼항 연산자는 문자열 안(예: $"" 인터폴레이션)에도 쉽게 넣을 수 있어.

5. 중첩 삼항 연산자 — 조심!

삼항 연산자는 서로 안에 넣을 수 있어(각 경우에 또 삼항 연산자). 근데... 이러면 나중에 코드 읽는 사람이 머리 아플 수 있어(심지어 그게 2일 뒤의 너라도).

예시: 나이로 카테고리 정하기

string category = (age < 7) ? "유치원생" :
                  (age < 18) ? "학생" :
                  (age < 65) ? "성인" : "노인";

결정 표:

나이 조건 결과
< 7 age < 7 유치원생
7–17 age < 18 학생
18–64 age < 65 성인
65 이상 그 외 노인

이 정도 코드는 읽을 만한데, 더 복잡하면 if-else if-else를 쓰는 게 더 좋아.

6. 꿀팁: 삼항 연산자와 bool 타입

가끔 이런 코드가 보여:

bool adult = (age >= 18) ? true : false;

근데 이건 쓸데없어. (age >= 18) 자체가 이미 bool을 반환해. 그래서 그냥 이렇게 하면 돼:

bool adult = (age >= 18);
1
설문조사/퀴즈
조건 연산자, 레벨 3, 레슨 5
사용 불가능
조건 연산자
조건 연산자
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION