'-'는 우선순위 목록을 나타냅니다. 같은 '-' 항목들의 연산자 우선순위는 동일하며 '좌' 혹은 '우' 결합성에 따라 순서대로 실행됩니다. 할당 연산자는 '우' 결합성이기 때문에 'a = b = 3' 과 같은 식이 허용(b가 3이 되고 a가 b이 됨, 즉 a도 3이 됨)됩니다.
우선순위 목록(-)이 아래에 있을수록 더 늦게 실행됩니다. 그래서 '곱하기 연산자'보다 '가산 연산자'가 늦게 실행됩니다. 연산자와 우선순위 목록이 많기 때문에 일일이 외우기가 쉽지 않을 것입니다. 하지만 다음과 같이 구분하여 쉽게 외울 수 있는 방법이 있습니다.
단항 연산자는 피연산자가 한 개 있는 연산자를 뜻하며 두 번째로 우선순위가 높습니다. (사실상 기본 연산자도 단항으로 이루어지기 때문에 단항은 높다고 생각하면 됩니다)
할당 연산자는 =가 붙어있는 연산자를 뜻하며 연산자 우선순위가 제일 낮습니다.
이것만 외워두면 그밖에는 상식적인 수준에서 외울 수 있습니다.
곱하기와 가산 > 비트 시프트 > 비교와 상등 > 비트 연산자 > null 병합 > 3항 연산자(조건 연산자)
그렇다면 이제 비트로써 홀짝을 테스팅하는 코드는 다음과 같이 비트 연산자를 괄호로 묶어서 이루어져야 함을 알 수가 있습니다.
if ( (test & 1) == 1) ;
- 기본 연산자
x.y x?.y a[x] a?[x] x++ x-- f(x) new default checked
unchecked delegate typeof sizeof nameof ->
- 단항 연산자
+x -x !x ~x ++x --x (T)x await &x *x
- 곱하기 연산자
x * y x / y x % y
- 가산 연산자
x + y x - y
- 시프트 연산자
x << y x >> y
- 관계형 및 형식 테스트 연산자
x < y x > y x <= y x >= y is as
- 상등 연산자
x == y x != y
- 논리적 AND 연산자
x & y
- 논리적 XOR 연산자
x ^ y
- 논리적 OR 연산자
x | y
- 조건부 AND 연산자
x && y
- 조건부 OR 연산자
x || y
- null 병합 연산자
x ?? y
- 조건 연산자
(bool) ? (true) : (false)
- 할당 및 람다 연산자
x = y x += y x -= y x *= y x /= y x %= y x &= y x ^= y x |= y x <<= y
x >>= y =>