C# 학습/C# 언어의 기초
C# 세미나 자료: 리터럴, 구두점, 연산자
DevGourmet
2025. 4. 7. 09:12
1. 개요
C# 프로그래밍을 작성할 때 자주 접하게 되는 요소 중 "리터럴", "구두점", "연산자"는 프로그램의 의미와 동작을 정의하는 핵심 요소입니다. 본 세미나에서는 이 세 가지 주제를 초급, 중급, 고급 단계로 나누어 이론과 예시를 중심으로 설명합니다.
2. 기본 이론
2.1 리터럴 (Literal)
- 정의: 코드 내에 직접 작성된 고정된 값
- 종류:
- 정수형 리터럴: 10, 0b1010, 0xFF
- 실수형 리터럴: 3.14, 1.0e-2, 2.5f
- 문자형 리터럴: 'A', '\n'
- 문자열 리터럴: "Hello", @"C:\\Path"
- 불리언 리터럴: true, false
- null 리터럴: null
2.2 구두점 (Punctuation)
- 정의: 코드 구조를 정의하기 위해 사용하는 기호들
- 예시: ;, ,, ., (), {}, []
- 용도:
- 문장 끝 구분 (;)
- 매개변수 구분 (`,")
- 멤버 접근 (.)
- 블록 정의 ({}), 배열/인덱스 ([]), 호출 (())
2.3 연산자 (Operator)
- 정의: 하나 이상의 피연산자에 대해 연산을 수행하는 기호
- 종류:
- 산술 연산자: +, -, *, /, %
- 비교 연산자: ==, !=, <, >, <=, >=
- 논리 연산자: &&, ||, !
- 대입 연산자: =, +=, -=, *= 등
- 기타 연산자: ??, ?., =>, is, as, sizeof, typeof, checked, unchecked
3. 단계별 설명
3.1 초급
이론 요약
- 리터럴은 실제 값
- 구두점은 코드 구조 형식 표현
- 연산자는 계산 또는 비교 수행
예시 코드
int age = 25; // 정수 리터럴, 대입 연산자
string name = "홍길동"; // 문자열 리터럴
bool isActive = true; // 불리언 리터럴
Console.WriteLine(name); // 구두점: . () ;
주의사항
- 세미콜론(;) 누락 시 컴파일 오류
- 문자열 안에서 특수문자는 이스케이프 문자(\n, \") 필요
3.2 중급
이론 심화
- 다양한 리터럴 형식과 이진/16진수 리터럴 활용
- 연산자 우선순위 이해
- null 병합 연산자(??), null 조건 연산자(?.) 사용
예시 코드
int hex = 0xFF; // 16진수 리터럴
int bin = 0b1010; // 2진수 리터럴
string path = @"C:\\Docs\\file.txt"; // @ 문자열 리터럴
Person p = null;
string name = p?.Name ?? "이름 없음"; // null 조건 및 병합 연산자
팁
- @"..." 형식은 경로 문자열 작성에 유용
- ?., ??는 null 체크 로직을 간단하게 만들어 줌
3.3 고급
고급 활용 및 사례
- 람다 식(=>)과 표현식 본문 메서드
- 연산자 오버로딩
- checked와 unchecked를 통한 오버플로 제어
- sizeof, typeof 연산자 활용
예시 코드
// 표현식 본문 메서드
int Square(int x) => x * x;
// 연산자 오버로딩
class Point
{
public int X, Y;
public static Point operator +(Point a, Point b)
{
return new Point { X = a.X + b.X, Y = a.Y + b.Y };
}
}
// checked 연산자
int big = int.MaxValue;
int result = checked(big + 1); // 예외 발생
실무 팁
- 성능 이슈가 있을 경우 checked 사용으로 안정성 강화 가능
- 연산자 오버로딩은 직관적 사용 가능하지만 오용 주의
4. 결론
- 리터럴은 데이터를 표현하는 기본 단위
- 구두점은 코드의 문법 구조를 결정
- 연산자는 데이터 간 관계 및 동작을 정의
- 기초 문법에 익숙해질수록 안정적이고 가독성 높은 코드 작성 가능
5. Q&A
- Q: @"..." 문자열은 어떤 상황에 쓰나요? A: 경로 문자열이나 이스케이프가 많은 문자열에서 편리하게 사용됩니다.
- Q: ?., ?? 연산자는 어떤 차이가 있나요? A: ?.는 객체가 null이 아니면 속성 접근, ??는 null일 경우 대체값 제공입니다.
감사합니다!