CodeGym /행동 /C# SELF /조건문에서 연산자 우선순위와 괄호

조건문에서 연산자 우선순위와 괄호

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

1. 소개

일상적인 비유로 시작해보자. 레시피를 상상해봐:

밀가루를 섞고, 계란과 설탕을 넣고 휘저어, 버터를 넣고 다시 휘저어.

좀 이상하지? 이제 "휘저어"랑 "넣고" 사이에 쉼표나 괄호가 있다고 생각해봐. 순서가 훨씬 명확해지지.

프로그래밍에서도 비슷한 상황이 생겨. 복잡한 식을 쓸 때 말이야:

bool result = a > 0 && b < 10 || c == 3;

순서가 어떻게 될까? 뭐가 먼저 계산될까: a > 0 && b < 10이 먼저고, 그 다음에 || c == 3이야? 아니면 반대일까? 계산 순서가 명확하지 않으면 컴퓨터가 "재료를 섞는 순서"를 헷갈릴 수 있고, 결과가 예상 밖이 될 수도 있어.

2. C#에서 연산자 우선순위

C# (그리고 대부분의 프로그래밍 언어)은 정해진 연산자 우선순위 표를 사용해.
우선순위가 높은 연산자가 낮은 연산자보다 먼저 실행돼.

이 표에서 조건문에 중요한 부분만 뽑아봤어:

연산자 설명 우선순위
() 괄호 가장 높음
! 논리 "NOT" 높음
==, != 같다 / 다르다 중간
<, >, <=, >= 비교 중간
&& 논리 "AND" 낮음
|| 논리 "OR" 더 낮음

(산술 연산자도 있는데, 걔네는 논리 연산자보다 우선순위가 더 높아.)

핵심 규칙

"AND" (&&) 연산자가 "OR" (||)보다 우선순위가 높아,
즉, 먼저 "AND"가 계산되고, 그 다음에 "OR"이야.

조건 우선순위 계산 흐름도

먼저 a > 0 && b < 10이 계산되고, 그 결과가 c == 3이랑 ||로 비교돼

실제로는: a > 0 && b < 10 || c == 3 — 먼저 a > 0 && b < 10이 계산되고, 그 결과가 c == 3이랑 ||로 비교돼.

3. 연산자 방향: 왼쪽에서 오른쪽, 그리고 반대

우선순위 말고도, 결합법칙(associativity)이라는 것도 있어.
이건 같은 우선순위의 연산자가 "나란히" 있을 때 어느 방향으로 계산되는지 정하는 규칙이야.

예시:

bool a = true, b = false, c = true;
bool result = a && b && c;

질문: 어떻게 계산될까?
답: &&의 결합법칙은 왼쪽에서 오른쪽이야.
그러니까 먼저 a && b를 계산하고, 그 결과를 c랑 계산해.

조건문에서 적용:

연산자 결합법칙
&&, || 왼쪽에서 오른쪽
! 오른쪽에서 왼쪽

4. 괄호 — 복잡한 조건에서 최고의 친구

여기서 진짜 마법(그리고 구원)이 시작돼. 식을 쓸 때 괄호는 우선순위를 바꿔주고 네 코드를 더 명확하고 안전하게 만들어줘.

예시 1 (괄호 없음):

// 우리가 원하는 것: "사용자가 성인이고 시민이거나, 아니면 특수패스가 있으면"
bool isAdult = age >= 18;
bool isCitizen = country == "벨라루스";
bool hasPermit = hasSpecialPass == true;

if (isAdult && isCitizen || hasPermit)
{
    Console.WriteLine("접근 허용됨!");
}

C#이 계산하는 방식:
먼저 isAdult && isCitizen을 계산하고, 그 결과를 ||hasPermit이랑 비교해.

  • 예를 들어, isAdult = true, isCitizen = false, hasPermit = true
  • isAdult && isCitizentrue && falsefalse
  • false || truetrue

즉, 특수패스가 있으면 무조건 통과.
특수패스가 없어도 성인 시민이면 통과.

예시 2 (괄호 있음):

if (isAdult && (isCitizen || hasPermit))
{
    Console.WriteLine("접근 허용됨!");
}

이제 프로그램은 먼저:
isCitizen || hasPermit을 계산하고, 그 결과를 isAdult랑 같이 봐.

즉, 성인이면서 그리고 (시민이거나 특수패스가 있어야) 돼.
괄호 하나 차이인데, 로직은 완전 달라지는 거지!

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION