대입 + 산술 연산자
•
표현식을 통한 의미
A += B, A -= B, A /= B, A %= B, A *= B
풀이
A += B (A = A + B)
A -= B (A = A - B)
A *= B (A = A * B)
A /= B (A = A / B)
A %= B (A = A % B)
증가 ++ 감소 연산자 - -
•
표현식
A++, ++A; → A = A + 1;
A- -, - - A; → A = A - 1;
•
++, - - 의 위치의 의미
◦
전위식(prefix) : 변수 값을 1먼저 증가, 감소
◦
후위식(postfix) : 후위식이 포함된 문장을 끝낸 후에 변수 값을 1증가 또는 감소
관계(비교) 연산자 relational operator
•
비교 연산자
◦
비교 연산자는 어떠한 조건이 참인지 거짓인지를 판단하기 위한 연산자이다.
◦
비교 연산자의 결과는 항상 0(false)와 1(ture)이다.
•
< , >, ≥ , ≤ , ==, ≠
◦
<, > : 크거나 작거나를 표현하는 연산자이다.
◦
≤ , ≥ : 크거나 같거나, 작거나 같거나를 표현하는 연산자이다.
◦
==, ≠ : 우리가 수학에서 배웠던 =와 같은 의미를 가지고 있는게 == 연산자이다. 하지만 앞 != 이런식의 연산자는 다른 뜻을 가지고 있다. 앞에 !(Not)이 붙으면 같지 않다로 해석 할 수 있다.
논리 연산자 logical operator
•
C언어에서 참(ture)과 거짓(false)의 의미
◦
ture : 0이외의 값
◦
false : 0
•
&&(AND) : 그리고
연산식 | 결과 |
0 && 0 | 0 |
0 && 1 | 0 |
1 && 0 | 0 |
1 && 1 | 1 |
◦
AND연산자의 경우는 논리곱이라고도 말을 한다. 여기서 말하는 논리곱이란, 두가지의 조건이 모두 0이 아닌 수(ture)가 나와야 true라고 하는 것을 논리곱이라고 한다.
•
|| (OR) : 또는
연산식 | 결과 |
0 || 0 | 0 |
0 || 1 | 1 |
1 || 0 | 1 |
1 || 1 | 1 |
◦
OR연산자의 경우는 논리합이라고 한다. 논리합은 두가지 조건중에 하나라도 0이 아닌 수(true)가 나오면 true라고 하는 것을 논리합이라고 한다.
•
! (NOT)
연산식 | 결과 |
!0 | 1 |
!1 | 0 |
◦
NOT연산자는 쉽게 생각하면 결과값을 반대로 뒤집어 준다고 생각하면 된다. 0(false)이면 1(true)로 해주는 식의 연산자이다.
비트 연산자 bitwise operator
•
&, |, ~
◦
& : and, | : or, ~ : not
◦
앞에서 배웠던 AND, OR, NOT과 같다고 생각하면 된다.
•
^ (XOR)
◦
피연산자의 비트 값이 같으면 0 다르면 1
연산식 | 결과 |
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
•
비트연산자는 일반적인 프로그래밍에서는 잘 사용하지는 않는다. 하지만 자주 사용해야 하는 경우는 이미지관련된 연산을 해야할때, 예를들면 이미지를 흑백으로 전환한다거나, 이런경우에 비트연산을 많이 사용된다.
•
<<, >>
◦
비트 이동
◦
변수 또는 값 << 비트 이동 개수
◦
변수 또는 값 >> 비트 이동 개수
◦
num << 5
▪
실제로 비트가 5칸 왼쪽으로 움직인 결과값이 나온다.
▪
이렇게 비트가 움직이는 것을 보고 쉬프트(Shift)라고 한다.
형 변환 연산자 (type conversion)
•
일시적인 형(type) 변환
◦
(데이터형) 변수 또는 상수
•
형 (type) 변환을 할 때 주의사항
◦
메모리 크기와 데이터 허용 범위를 고려해야한다.
int a;
char b;
b = 10;
a = b;
C
복사
•
위의 코드의 경우 warring 메시지가 나온다. 같은 데이터 형이 아니기 때문인데, 이부분을 해소하기 위해서는 캐스팅(형변환)을 해주어야 한다.
int a;
char b;
b = 10;
a = (int)b;
C
복사
•
위의 코드처럼 a = (int)b; 이렇게 하면 일시적으로 저 코드 한줄의 한정된 상태에서 b의 값이 int형으로 형 변환이 되서 a에 값을 저장하게 된다.