2. C언어 기초
1) 연산자
▣ 연산자의 우선 순위
순위 | 형 | 연산자 | 결합성 |
1 | primary | () [] . -> | -------> |
2 | 단항 | * & ! + -- (datatype) sizeof | <------- |
3 | 승법 | * % / | -------> |
4 | 가법 | + - | -------> |
5 | 관계 | < > <= >= | -------> |
6 | 등가 | == != | -------> |
7 | 논리곱 | && | -------> |
8 | 논리합 | || | -------> |
9 | 대입 | = += -= *= %= /= | <------- |
- 중괄호( {} ) 는 연산자로 취급하지 않음. 그냥 코드를 묶는 역할.
- 결합성 : 동일선상에 같은 우선순위의 연산자들이 여러 개 있을 때 어느 쪽에서 부터 연산해야 할지 결정.
▣ 산술 연산자
#include <stdio.h> int main() { int a = 6; int b = 4; printf("덧셈 : %d\n", a + b); printf("뺄셈 : %d\n", a - b); printf("곱셈 : %d\n", a * b); printf("나눗셈 : %d\n", a / b); printf("나머지 : %d\n", a % b); return 0; }
- 사칙연산과 똑같지만 / 는 int 형으로 계산할 때와 double 형으로 계산할 때 다른 결과를 보여줌.
- 6 / 4 = 1 이지만 6.0 / 4.0 = 1.5 라는 값을 반환함.
- % 나머지 연산은 오직 int 형 정수들을 위한 연산자임.
▣ 관계 연산자
- 관계 연산자는 < , >, >=, <=, ==, != 가 있으며 맞으면 참(1) 틀리면 거짓(0)을 반환함.
- 이 때 참, 거짓을 논리값이라 부름.
- == 연산자는 두 수가 같으면 참을 반환.
- != 연산자는 두 수가 같지 않으면 참을 반환.
#include <stdio.h> int main() { int a = 6; int b = 4; printf("%d \n", a < b); printf("%d \n", a <= b); printf("%d \n", a > b); printf("%d \n", a >= b); printf("%d \n", a == b); printf("%d \n", a != b); return 0; }
- 결과 값
▣ 논리 연산자
- 논리값(T, F)로 연산을 해서 결과도 논리값으로 반환.
- AND(논리곱, &&) : 두 수가 모두 참일 때 참을 반환.
- OR(논리합, ||) : 둘 중 하나만 참이어도 참을 반환.
- NOT(부정, !) : 참을 거짓으로, 거짓을 참으로 반환.
- XOR(배타적논리합, ^) : 서로 다른 논리값을 주면 참, 같으면 거짓.
☞ XOR 같은 경우는 비트논리 연산자이므로 비트단위로 계산함
☞ 6 ^ 4 = 0110 ^ 0100 = 0010 = 2 가 됨.
☞ 또한 a ^ b = c 이면 b ^ c = a 도 됨.
☞ a ^ a = 0 이 됨을 기억할 것.
#include <stdio.h> int main() { int a = 0; int b = 1; int c = -1; printf("%d \n", a || b); printf("%d \n", b || c); printf("%d \n", a && c); printf("%d \n", b && c); printf("%d \n", !a); printf("%d \n", !b); return 0; }
- 결과 값
▣ 대입 연산자
- 변수의 값이 바뀌는게 제일 중요함.
- ★= : ★ 연산을 하고 난 뒤의 값을 대입.
- 종류 : =, +=, -=, *=, /=, %= 등이 있음.
i2sec 대구지점 23기 수료생.
'해킹&보안 > C언어' 카테고리의 다른 글
[D+9] C언어 기초 (3) (0) | 2017.02.17 |
---|---|
[D+8] C언어 기초 (2) (0) | 2017.02.16 |
[D+5] C언어 소개 (4) (0) | 2017.02.13 |
[D+4] C언어 소개 (3) (0) | 2017.02.09 |
[D+3] C언어 소개 (2) (0) | 2017.02.08 |