숏컷 코드
int total = price * count; // 산술
bool passed = score >= 60; // 비교
bool canEnter = age >= 20 && hasTicket; // 논리 AND
count += 1; // 복합 대입
string tag = isAdmin ? "admin" : "user"; // 삼항문법
어떤 연산자가 있나
입문 단계에서는 연산자를 아래 다섯 묶음으로 보면 대부분의 코드를 읽을 수 있습니다.
// 산술
total = price * count;
// 비교
passed = score >= 60;
// 논리
canEnter = age >= 20 && hasTicket;
// 대입 / 증감
count += 1;
count++;
// 조건 선택
label = isAdmin ? "admin" : "user";산술 연산자
기본 사칙연산과 나머지(%)를 제공합니다. 정수 나눗셈은 소수점을 버립니다. 실수 결과가 필요하면 피연산자 중 하나를 double로 변환해야 합니다.
int a = 10, b = 3;
Console.WriteLine(a / b); // 3 — 소수점 버림
Console.WriteLine(a % b); // 1 — 나머지
Console.WriteLine((double)a / b); // 3.333... — 캐스팅 후 실수 나눗셈
// 복합 대입 — 자기 자신에 연산 후 재대입
count += 5; // count = count + 5
count -= 2;
count *= 3;
count /= 2;
count++; // 1 증가 (후위)
++count; // 1 증가 (전위)비교 연산자 — 결과는 항상 bool
비교 연산자는 항상 bool을 반환합니다. ==는 값 비교, !=는 불일치 비교입니다.
bool result1 = score >= 60; // 크거나 같음
bool result2 = name == "Mina"; // 문자열 값 비교
bool result3 = a != b; // 다름
bool result4 = x > y && y > 0; // 조합주의: =는 대입, ==는 비교입니다. if (x = 5)처럼 =를 쓰면 C# 컴파일러가 오류를 냅니다 (C/C++과 다르게 조건식에서 대입은 허용되지 않음).
int x = 5;
// ❌ 대입과 비교를 헷갈리면 컴파일 오류
// if (x = 5) { }
// ✅ 비교
if (x == 5) { }논리 연산자 — short-circuit 평가
&&와 ||는 단락 평가(short-circuit) 를 합니다. 왼쪽 결과만으로 이미 답이 결정되면 오른쪽은 실행되지 않습니다.
// && — 왼쪽이 false면 오른쪽 실행 안 함
if (list != null && list.Count > 0) // list가 null이면 Count 접근 안 함
Process(list);
// || — 왼쪽이 true면 오른쪽 실행 안 함
bool result = cache != null || LoadCache(); // cache가 있으면 LoadCache() 호출 안 함
// ! — 논리 반전
bool isEmpty = !items.Any();&와 |는 short-circuit 없이 양쪽을 항상 평가하는 비트 연산자이므로 조건식에서는 보통 &&, ||를 씁니다.
삼항 연산자와 비트 연산
삼항 연산자는 조건에 따라 두 값 중 하나를 선택합니다. 짧은 조건 분기에 씁니다.
string label = score >= 60 ? "합격" : "불합격";
int max = a > b ? a : b;비트 연산자는 정수의 각 비트를 직접 다룹니다. 플래그 처리, 저수준 프로토콜, 최적화에서 사용합니다.
int flags = 0b1010;
int mask = 0b1100;
Console.WriteLine(flags & mask); // AND: 0b1000 = 8
Console.WriteLine(flags | mask); // OR: 0b1110 = 14
Console.WriteLine(flags ^ mask); // XOR: 0b0110 = 6
Console.WriteLine(~flags); // NOT: 비트 반전
Console.WriteLine(flags << 1); // 왼쪽 시프트: 곱하기 2
Console.WriteLine(flags >> 1); // 오른쪽 시프트: 나누기 2체크포인트
| 연산자 | 의미 | 주의 |
|---|---|---|
+, -, *, /, % | 산술 | 정수 /는 소수점 버림 |
==, !=, >, <, >=, <= | 비교, 결과는 bool | =와 혼동 주의 |
&&, ||, ! | 논리, short-circuit | &, |는 항상 양쪽 평가 |
+=, -=, *=, /= | 복합 대입 | — |
++, -- | 전위/후위 증감 | 표현식 안에서 순서 주의 |
?: | 삼항 조건 | 간단한 분기에만 |
&, |, ^, ~, <<, >> | 비트 연산 | 플래그, 저수준 처리 |
주의할 점
=는 대입, ==는 비교입니다. 조건문에서 둘을 혼동하면 전혀 다른 동작이 나옵니다. C# 컴파일러는 if (x = 5)를 오류로 막아주지만, x = GetValue()처럼 메서드 반환값 대입은 오류가 아니므로 주의해야 합니다.
++i(전위)와 i++(후위)는 식 안에서 쓸 때 결과값이 다릅니다. 전위는 증가 후 값을 반환하고, 후위는 증가 전 값을 반환합니다. 복잡한 식 안에서 혼용하면 의도를 읽기 어렵습니다.
참고 링크
1 sources