반응형
연산자 타입 예 시 설 명
산술 연산자 +, -, *, /, %, ++, -- 수학적 계산을 수행합니다.
비교 연산자 ==, !=, <, >, <=, >= 두 값을 비교하여 bool 값을 반환합니다.
논리 연산자 && (And), || (Or), ! (Not) bool 값에 대한 논리 연산을 수행합니다.
비트 연산자 & (AND), | (OR), ^ (XOR) 비트 단위의 연산을 수행합니다.
할당 연산자 =, +=, -=, *=, /=, %=, &=, 변수에 값을 할당합니다.
조건 연산자 ? : 조건에 따라 다른 값을 반환합니다.
Null 조건 연산자 ?. Null 검사를 간단히 수행합니다.
Null 병합 연산자 ?? (C# 3.0 이상만 지원) Null 값을 대체값으로 대체합니다.

 

논리 연산자 :
연산자 설명 예시 결과
&& (AND) 둘 다 참일 때 참 true&& true true
    true && false false
|| (OR) 둘 중 하나라도 참이면 참 true || false true
    false || false false
! (NOT) 참->거짓으로, 거짓->참으로 !true false
    !false true

 

• 비트 연산자 :
1. & (비트 AND) : 두 피연산자의 대응되는 비트가 모두 1일 때 1을 반환합니다.
ex:) 5 & 3 = 1 (이진수로 101 & 011 = 001)

2. | (비트 OR) : 두 피연산자의 대응되는 비트 중 하나라도 1이면 1을 반환합니다.
ex:) 5 | 3 = 7 (이진수로 101 | 011 = 111)

3. ^ (비트 XOR) : 두 피연산자의 대응되는 비트가 서로 다르면 1을 반환합니다.
ex:) 5 ^ 3 = 6 (이진수로 101 ^ 011 = 110)

4. ~ (비트 NOT) : 피연산자의 모든 비트를 반전시킵니다.
ex:) ~5 = -6 (이진수로 ~00000101 = 11111010, 2의 보수 표현)

5. << (왼쪽 시프트) : 비트를 왼쪽으로 지정된 수만큼 이동시킵니다. 오른쪽에는 0이 채워집니다.
ex:) 5 << 1 = 10 (이진수로 101 << 1 = 1010)

6. >> (오른쪽 시프트) : 비트를 오른쪽으로 지정된 수만큼 이동시킵니다. 왼쪽에는 부호 비트가 채워집니다.
ex:) 5 >> 1 = 2 (이진수로 101 >> 1 = 010)


• 비트 연산자 사용처 :
비트 연산자는 주로 다음과 같은 상황에서 사용됩니다:
1. 플래그 조작 : 여러 boolean 값을 하나의 정수에 저장할 때
2. 하드웨어 제어 : 특정 비트를 설정하거나 해제할 때
3. 암호화 : 비트 단위의 연산이 필요한 암호화 알고리즘에서
4. 최적화 : 특정 수학 연산을 빠르게 수행할 때 (예: 2로 나누기 대신 >> 1 사용)

 

• ? 연산자 (조건 연산자) : 조건 연산자는 조건에 따라 두 값 중 하나를 선택합니다. 문법은 다음과 같습니다.
ex1) condition ? expression1 : expression2
ex2) int result = (10 > 5) ? 1 : 0;    // result는 1​

 

• ?. 연산자 (Null 조건 연산자) : 객체가 null인 경우 멤버 접근을 안전하게 수행할 수 있게 해줍니다. 객체가 null이면 전체 표현식이 null을 반환하고, 그렇지 않으면 멤버에 접근합니다.
class Person
{
    public string Name { get; set; }
}

Person person = null;
int? length = person?.Name?.Length;
Console.WriteLine(length);   // 출력:​


이 예시에서 person이 null이므로, length는 null이 됩니다. NullReferenceException이 발생하지 않습니다.

 

• ?? 연산자 (Null 병합 연산자) : Null 병합 연산자는 왼쪽 피연산자가 null이 아니면 그 값을 사용하고, null이면 오른쪽 피연산자를 사용합니다.
string name = null;
string displayName = name ?? "Unknown";     // displayName은 "Unknown"​

 

반응형

+ Recent posts