C#-3 연산자

D·2021년 3월 27일

C#공부

목록 보기
3/9

모든 프로그래밍 언어는 다양한 연산자를 제공하며 C#또한 다양한 연산자를 제공한다.

↑C#에서 제공하는 모든 연산자.
모든 연산자는 우선순위가 있는데 사칙연산에서 곱셈 연산이 덧셈연산보다 우선되는것과 같이 연산자에서도 비슷하게 적용된다. 또한 대입과 null연산자를 제외하면 모든 연산은 왼쪽에서 오른쪽 방향으로 수행된다.

1.산술연산자

+(덧셈),-(뺄셈),*(곱셈),/(나눗셈),%(나머지) 등 사칙연산과 연관된 연산자를 산술 연산자라고 한다.


일반적인 사칙연산 우선순위처럼 +,- 보다 *,/ 연산이 우선 순위가 더 높다.

2.대입연산자

= 등 오른쪽의 값을 왼쪽에 할당하는 연산자. 기본이 되는 "="를 단순 할당 연산자라고 부르며 여기에 다른 연산자와 같이 쓸경우 복합

위의 사진처럼 대입연산자를 이용해서 변수등에 특정 값을 할당할수 있으며 따라서 a에는 2의 값이 b에는 5에 값이 들어간것으로 보고 아래와같은 결과값이 나오게 된다.


↑단순 할당 이후 복합 할당자를 이용해서 할당한 모습과 그 결과값

가끔씩 같음 연산자(==)와 혼동해서 같음 연산자 대신 대입 연산자를 쓰B거나 그 반대의 경우를 써서 오류를 만들기도 한다.

3.비교연산자


↑C#에서 제공하는 모든 비교 연산자

양쪽의 값을 비교해서 논리값을 출력하는 연산자. 출력값은 Bool형태로 출력된다


두 값을 비교했을때 연산자의 비교가 참일경우 True가나오며 아닐경우 False가 출력된다.

4.비트연산자

비트단위의 연산을 수행하기 때문에 비트 연산자라고 하며 3가지 종류가 있다.
1.비트 보수


보수는 거꾸로된 수라는 의미로 비트 보수 연산자는 해당 비트를 뒤집는 연산자를 의미한다.

2.비트 시프트 연산자


비트 시프트 연산자는 대상의 비트를 특정 칸수만큼 이동시키는 연산자이다. 각각 좌측,우측으로 비트를 움직인다.

비트 연산자는 주로 이진파일이나 메모리를 다룰때 많이 사용된다.

5.논리 연산자


↑C#의 논리연산자의 논리표
논리 연산자란 두 형식의 논리값에 따라서 논리 출력값이 나오는 연산자이다.


&는 논리곱 연산을 수행하며 |은 논리 합 연산을 수행한다. 논리곱은 양쪽이 둘다 True 값일때만 True가 되며 논리합은 양쪽이 어느쪽이든 True일 경우 True상태가 된다.

^의 경우 베타적 논리합 연산을 수행하는데 이경우 양쪽이 서로 같은 값을 가질 경우 True값을 출력한다.

6.형식 테스트 연산자

형식 검사와 형식 변환을 위한 연산자
is는 해당하는 형식이 지정된 형식과 호환되는지를 검사해 호환될 경우 참값을 반환하며
as는 호환될경우 명시적으로 변환하는 연산자이다
캐스트식(type)또한 연산자에 포함된다
typeof는 해당 타입의 형식을 가져온다

7.조건연산자

?:는 삼항 연산자라고도 하며 특정 조건값에 따라 다른 조건값을 출력하는 연산자이다.


만약 ?앞의 문장이 사실일 경우 : 왼쪽의 항목을 내보내고 틀릴경우 오른쪽의 항목을 내보내는 식으로 동작한다.

?.는 널 조건부 연산자이며 해당값이 Null일경우 Null값을 반환하고 아닐경우 . 뒤에 적인 객체를 반환하는 연산자이다.

8.멤버 엑세스 연산자

멤버 엑세스 연산자는 특정 멤버에 접근하기 위해 쓰는 연산자로 각각 특정 멤버의 요소에 접근하기 위한 기능을 가지고 있다.

가장 흔하게 쓰이는 "." 연산자는 네임스페이스안에 중첩으로 정의된 객체나 하위 형식에 엑세스 하기 위해 사용된다.

[]의 경우 배열,인덱스 요소에 접근하기 위해 사용되는 연산자다.

()의 경우 내부 멤버에 대한 호출 연산자로 이를 통해 매서드나 대리자를 호출할수 있다.

연산자 오버로딩

오버로딩이란 하나의 형식에 여러개의 구현을 만들어놓는 것을 말하며 연산자 또한 이미 구현된 기능 외에도 오버로딩 기능을 이용할 경우 다른 기능을 추가적으로 구현하는것이 가능하다. 예를 들면 원래는 사칙연산이 불가능한 형식을 사칙연산이 가능하도록 구현하는 식으로 가능하다.


↑C#에서 연산자 오버로딩을 지원하는 연산자.
다만 입력 구조상 연산자 오버로딩을 지원하지 않는 연산자들 또한 많다.

출저

0개의 댓글