[기초 구문 익히기] 4장 데이터를 가공하는 연산자

0

이것이 C#이다

목록 보기
4/26

4.1 C#에서 제공하는 연산자 둘러보기

4.2 산술 연산자

산술 연산자는 수치 형식의 데이터를 다루는 연산자입니다.
산술 연산자는 이름이 나타내는 것처럼 수치 형식에 대해서만 사용이 가능합니다.
다시말해 정수,부동소수점,decimal 형식에 대해서만 사용가능하다는 뜻입니다.

4.3 증가 연산자와 감소 연산자

증가 연산자와 감소 연산자는 피연산자의 값을 1 증가 또는 감소시키는 일이 전부입니다.
증가 연산자의 기호는 ++ 감소연산자의 기호는 -- 를 사용합니다.

전위와 후위의 차이점

int a = 100;
Console.WriteLine(a++); 	//101이 아닌 100을 출력하고, 출력후에는 101로 증가 
Console.WriteLine(++a); 	//102를 출력함

4.4 문자열 결합 연산자

문자열 결합 연산자는 문자열을 합칠 수 있는 연산자입니다.
두 string 형식을 연결할 때 사용합니다.

string result = "123" + "456";
string result2 = "이것이 " + "C#이다.";

출력
123456
이것이 C#이다.

4.5 관계 연산자

관계 연산자는 두 피연산자 사이의 관계를 평가하는 연산자입니다.
가령 두 피연산자가 같은지 또는 다른지, 한쪽이 다른 한쪽보다 큰지 또는 작은지등을 판단해줍니다.

bool result;
result = 3 > 4; 	//거짓
result = 3 >= 4; 	//거짓
result = 3 < 4; 	//참
result = 3 <= 4; 	//참
result = 3 == 4; 	//거짓
result = 3 != 4; 	//참

4.6 논리 연산자

부울 연산이라고도 하는 논리 연산은 참과 거짓으로 이루어지는 진릿값이 피연산자인 연산을 말합니다.
C#에서 제공하는 논리 연산자는 논리곱(&& : AND),논리합(|| : OR),부정(! : NOT) 연산자가 있습니다.

논리곱 연산자는 피연산자로 오는 두 개의 진릿값이 모두 참이여야 그 결과가 참이 되고,
그 이외에는 모두 거짓이 됩니다.

True && True : True
True && False : False
False && True : False
False && False : False

논리합 연산자는 피연산자로 오는 두 개의 진릿값중 하나라도 참이면 연산 결과가 참이 됩니다.

True && True : True
True && False : True
False && True : True
False && False : False

부정 연산자는 피연산자의 진릿값을 반대로 뒤집습니다.

!True : False
!False : True

4.7 조건 연산자 (삼항연산자)

적절한 조건 연산자는 코드의 가독성을 향상합니다.

변수 = 조건식 ? 참때의 값 : 거짓일떄의 값

int a = 30;
string result = (a == 30) ? "삼십" : "삼십이 아님";

4.8 null 조건부 연산자

?.가 하는 일은 객체의 멤버에 접근하기 전에 해당객체가 null인지 검사하여 그 결과가 참(즉 객체가 null)이면 그 결과로 null을 반환하고, 그렇지 않은 경우에는 . 뒤에 지정된 멤버를 반환합니다.

== 연산자를 이용한 코드

class Foo
{
	public int member;
}
Foo foo = null;

int? bar;
if(foo == null)
	bar = null;
else
	bar = foo.member;

?.연산자를 이용한 코드

class Foo
{
	public int member;
}
Foo foo = null;

int? bar;
bar = foo?.member;	//foo객체가 null이 아니면 member필드에 접근하게 해줌

4.9 비트 연산자

1byte크기는 비트 8개를 담을 수있는 크기의 데이터 형식입니다.
비트 수준에서 데이터를 가공해야하는 경우가 종종 생깁니다.
예를 들어 비트 00000001을 00001000으로 바꾸고 싶을때는 원본데이터에 << 3을 하면 됩니다. 이런식으로 비트 연산자는 만들고싶은 비트를 조합할수있게하는 연산자입니다.
비트연산 활용하기

시프트 연산자
시프트 연산자는 비트를 왼쪽이나 오른쪽으로 이동시키는 연산자입니다.
시프트 연산자의 작동 원리
시프트 연산은 고속의 곱셈과 나눗셈을 구현하는데 사용되기도 하고,
&연산자와|연산자와 함께 byte처럼 작은 단위로 쪼개진 데이터를 다시 하나의 int나 long형식으로 재조립하는 데 사용되기도 합니다.

원본데이터를 a, 옮긴 비트 수를 b라고 하면,

<< 왼쪽 시프트 연산시

>> 오른쪽 시프트 연산시

이런 결과를 얻을 수있습니다.

입력

int a = 1;

Console.WriteLine($"a : {a}");
Console.WriteLine($"a : {a << 1}");
Console.WriteLine($"a : {a << 2}");
Console.WriteLine($"a : {a << 5}");
//증가,감소 연산자처럼 a를 직접적으로 증가시키는게 아니라 값을 리턴해줌+-*/87

💻 출력
a : 1
a : 2
a : 4
a : 32

비트 논리 연산자

논리곱(AND) 연산자 : 두 피연산자 비트에 대해 논리 곱을 수행합니다.
정수계열과 bool형식에 사용 할 수있습니다.

int result = 9 & 10; // result는 8

논리합(OR) 연산자 : 두 피연산자 비트에 대해 논리 합을 수행합니다.
정수계열과 bool형식에 사용 할 수있습니다.

int result = 9 | 10; // result는 11

배타적 논리합(XOR) 연산자 : 두 피연산자 비트에 대해 논리 배타적 논리합을 수행합니다.
정수계열과 bool형식에 사용 할 수있습니다.

int result = 9 ^ 10; // result는 3

보수(NOT) 연산자 : 피연산자 비트에 대해 0은 1로, 1은 0으로 반전 시킵니다. 단항 연산자입니다. int,uint,long,ulong에 사용할수 있습니다.

int a = 255;
int result = ~a; //result는 -256

4.10 비트 할당 연산자

4.11 null 병합 연산자

null병합 연산자 ??는 null조건부 연산자처럼 프로그램에서 종종 필요한 변수/객체의null검사를 간결하게 만들어주는 역활을 합니다.
??연산자는 두 개의 피연산자를 받아들이고 왼쪽 피연산자가 null인지 판단합니다.
평가 결과가 null이 아닌 것으로 나타나면 왼쪽 피연산자를 그대로 반환하고, 만약 왼쪽 피연산자가 null인 것으로 평가되면 오른쪽 피연산자를 반환합니다.

입력

int? a = null;
Console.WriteLine($"{a ?? 0}");	//왼쪽 피연산자가 null이므로 0(오른쪽 피연산자)반환

int? a = 99;
Console.WriteLine($"{a ?? 0}"); //왼쪽이 null이 아니므로 99를 그대로 반환

💻 출력
0
99

4.12 연산자의 우선 순위

C#연산자들 사이에도 우선순위가 존재합니다. 우선순위가 높을수록 빨리 처리하게 됩니다.
그리고 우선 순위가 같은 경우에는 왼쪽의 연산자가 오른쪽 연산자보다 우선순위가 높습니다.
( ※ 우선 순위는 1이 제일 높음)

0개의 댓글