-
산술, 관계, 비트 연산자,논리, 대입, 조건 연산자C언어 2022. 3. 8. 23:28728x90반응형
산술 연산자
산술 연산자는 평소 많이 봤을 기호들이다.
연산자 의미 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 % 나머지 ++ 증가 연산자 -- 감소 연산자 거듭제곱은 연산자가 없다.
하지만 math.h 라이브러리의 pow 를 이용하여 거듭제곱을 표현할수가 있다.
루트는 sqrt 이다.
전치:
변수 앞에 연산자를 사용할경우, 변수의 값을 증감시킨 후 해당 변수를 연산에 사용한다.
ex) ++x, --x
b = 1
a = (++b) +2
b의 값을 먼저 증가시킨뒤, 연산을 하면된다.
b + 1 는 2 가 되므로 b는 2가 되고, 연산을 하게된다면 2+2 = 4 즉 a는 4가 된다.
a = 4, b = 2
후치:
변수 뒤에 연산자를 사용할경우, 변수를 연산에서 사용한뒤, 변수의 값을 증감시킨다.
ex) x++, x--
b = 1
a = (b++) + 2
b의 값인 1을 + 2 연산을 한뒤 값을 a에 저장을 한다.
그리고 b의 값을 증가한다.
a = 3, b = 2가 된다.
관계 연산자
두 개의 수를 비교하여, 참(true) 거짓(false)으로 나타낸다.
참은 1, 거짓은 0으로 사용된다.
c프로그램에서는 0외의 숫자가 참으로 간주된다.
연산자 의미 == 같다 != 같지 않다 > 크다 >= 크거나 같다 < 작다 <= 작거나 같다 c언어에서는 같다라는 의미가 = 가 아닌 == 이다.
= 는 단순히 대입을 하는것뿐이다.
즉 a = 1의 의미는 a가 1인것이 아니라 a라는 변수에 1의 값을 집어 넣은것이다.
비트 연산자
컴퓨터가 사용하는 숫자인 0과 1으로 연산하는 것을 의미한다.
연산자 의미(논리) & and 비트가 모두 1이면 1 | or 비트중 한개라도 1이면 1 ^ xor 같으면 0 다르면 1 ~ not 0 이면 1, 1이면 0 << lleft shift 비트를 왼쪽으로 이동 >> right shift 비트를 오른쪽으로 이동 ex)
int a = 13, b = 21, c , d, e, f;
## 이진법으로 나타내자면 a = 1101, b = 10101이 된다.
c = a & b;
## &는 and 연산자이므로, c는 101, 5가 된다.
d = a | b;
## |는 or 연산자 이므로, d는 11101, 29가 된다.
e = a ^ b
## ^는 xor 연산자 이므로 e는 11000, 24가 된다.
f = ~ a;
## ~는 not 연산자 이므로 f는 10, 2가 된다.
a = a << 2;
## <<는 뒤에 나오는 숫자만큼 왼쪽으로 민다. 즉 a = 1101이므로 2칸 밀어서 110100, 52가 된다.
b = b >> 3;
## >> 는 뒤에 나오는 숫자만큼 오른쪽으로 민다. 즉 b = 10101이므로 3칸 밀어서 10, 2가 된다.
논리 연산자
논리 연산자는 2개의 논리 값을 연산하여 참과 거짓으로 나타낸다.
거짓은 0, 참은 1이다.
연산자 의미 !(not) 반대 ||(or) 하나라도 참이면 참 &&(and) 모두 참이면 참 대입 연산자
대입연산자는 연산 후 대입하는것이다.
연산자 의미 = 대입 조건 연산자
조건 연산자는 피 연산자가 3개이기 때문에 삼항 연산자라고도 불린다.
그리고 조건에 따라 서로 다른 수식을 처리한다.
#include <stdio.h>main(){int a = 5, b = 10, c, d;c = a == b ? a : b;d = a != b ? a + b : a * b;}이렇게 한다면c 값은 a 와 b 값이 같을경우 a 값을 c 에 대입하고 아니라면 b 값을 대입한다.즉 c는 b의 값인 10이 된다.d 값은 a와 b가 같지 않을 경우, a+b 값을 넣고 아니라면 a * b 값을 넣는다.즉 같지 않으모 a+b 값인 d는 15가 된다.728x90반응형