연산자(Operator)
- 피연산자 사이에서 계산을 수행하기 위해 사용되는 기호 또는 키워드이다.
- 피연산자 : 변수 or 상수 or 항
- 피연산자의 개수에 따라 단항 연산자와 이항 연산자가 있다.
- 최상위 연산자 : ( ), [ ]
종 류 | 연 산 자 |
1차 연산자 | ( ) [ ] . -> |
단항 연산자 | - ++ -- ~(비트 부정) !(논리 부정) * & sizeof(type) |
산술 연산자 | + - * / % |
비트 이동 연산자 | << >> |
관계 연산자 | < > <= >= |
동등 연산자 | == != |
비트 논리 연산자 | & ^ | |
논리 연산자 | && || ! |
조건 연산자 | (조건항) ? (항1) : (항2) |
대입 연산자 | = += -= *= /= %= &= ^= != <<= >>= |
콤마 연산자 | , |
// 전처리문
#include<stdio.h>
int main(){
// 선언문
int x = 3 + 4 * 2;
int y = (3 + 4) * 2;
int a = 1; // TRUE
int b = 0; // FALSE
// 입력문
// 처리문
// 출력문
printf("x = %d, y = %d\n\n", x, y);
printf("a && b = %d\n", a && b); // AND(논리_곱), a와 b 둘 다 참이면 참
printf("a || b = %d\n", a || b); // OR(논리_합), a와 b 둘 중 하나 참이면 참
return 0;
}
▷ 산술 연산자(사칙 연산자)
- +, -, *, /, %
▷ 증감 연산자
- 전위 연산자(++a): 연산 우선순위가 최상인 연산자, 증감하고 나서 연산에 사용
- 후위 연산자(a++): 연산 우선순위가 최하위 연산자, 연산에 사용하고 나서 증감
// 전처리문
#include<stdio.h>
int main(){
int x, y;
x = 10;
y = 0;
printf("x = %d, y = %d\n", x, y);
y = ++x; // x에 1을 더한 후, x를 y에 대입한다.
printf("x = %d, y = %d\n", x, y);
y = x++; // x를 y에 대입한 후, x에 1을 더한다.
printf("x = %d, y = %d\n", x, y);
return 0;
}
▷ 관계 연산자(비교 연산자)
- 두 수의 대소 관계를 비교하는 연산자이다.
- 연산의 결과는 참(1) 또는 거짓(0)으로 나온다.
연 산 식 | 결 과 |
a > b | a가 b보다 크면 1(참, TRUE), 그렇지 않으면 0(거짓, FALSE) |
a >= b | a가 b보다 크거나 같으면 1, 그렇지 않으면 0 |
a < b | a가 b보다 작으면 1, 그렇지 않으면 0 |
a <= b | a가 b보다 작거나 같으면 1, 그렇지 않으면 0 |
a == b | a와 b가 같으면 1, 다르면 0 |
a != b | a와 b가 다르면 1, 같으면 0 |
#include<stdio.h>
int main(){
int x = 10, y = 20, z = 10;
int res;
res = x > y; // x가 y보다 크면 1, 같거나 작으면 0
printf("res = %d\n", res);
res = x <= z; // x가 z보다 작거나 같으면 1, 크면 0
printf("res = %d\n", res);
res = x == z; // x와 z가 같으면 1, 같지 않으면 0
printf("res = %d\n", res);
res = y != z; // y와 z가 같지 않으면 1, 같으면 0
printf("res = %d\n", res);
res = (x > y) && (x <= z); // 둘 다 참이면 1, 거짓이면 0
printf("res = %d\n", res);
res = (x > y) || (x <= z);
printf("res = %d\n", res); // 둘 중 하나라도 참이면 1, 거짓이면 0
return 0;
}
▷ 논리 연산자
- 관계 연산자가 하나 이상일 때 사용한다.
- 연산의 결과는 참(1) 또는 거짓(0)으로 나온다.
연 산 식 | 결 과 | |
a && b | 논리곱(AND) | a가 b가 모두 참이면 1, 그렇지 않으면 0 |
a || b | 논리합(OR) | a와 b 둘 중 하나라도 참이면 1, 그렇지 않으면 0 |
!a | 논리 부정(NOT) | a가 거짓이면 1, 참이면 0 |
▷ 비트 연산자
- 비트로 변환하여 계산을 수행한다.
- 비트(Bit): Binary Digit(2진수)를 뜻하며, 0과 1로 표현된다.
- 종류: ~(Not, 비트 부정), &(and), |(or)
// 전처리문
#include<stdio.h>
int main(){
// 선언문
int x = 7; // 00000000 00000000 00000000 00000111
int y = 4; // 00000000 00000000 00000000 00000100
int z = 5; // 00000000 00000000 00000000 00000101
// 입력문
// 처리문
// 출력문
printf("x & y = %d\n", x & y); // 00000000 00000000 00000000 00000100
printf("x | y = %d\n", x | y); // 00000000 00000000 00000000 00000111
printf("~z = %d\n", ~z); // 11111111 11111111 11111111 11111010
// 0은 1로 바꾸고 1은 0으로 바꾼다.
return 0;
}
★ 5 = 00000000 00000000 00000000 00000101
-5 = 11111111 11111111 11111111 11111010 = -6
※ 맨 앞의 1은 (-) 부호를 나타낸다.
★ 1byte = 8bit
※ int는 4byte이므로 32bit로 표현된다.
★ -6은 6(00000000 00000000 00000000 00000110)을 2의 보수한 후, +1을 하면 된다.
▷ 조건 연산자(삼항 연산자)
- if~else 제어문의 모체가 된다.
- 항을 세 개 가지고 있는 연산자이다.
- (변수 =)조건항 ? 항1 : 항2; 조건항이 참이면 항1, 거짓이면 항2가 실행된다.
// 전처리문
#include<stdio.h>
int main(){
// 선언문
int x;
// 입력문
printf("x = ");
scanf("%d", &x);
// 처리문
x >= 0 ? printf("양수\n") : printf("음수\n");
// 출력문
return 0;
}
'C' 카테고리의 다른 글
[C언어] 실습: 세 개의 숫자를 입력받은 후, 큰 수 출력하기 (조건 연산자) (0) | 2020.12.10 |
---|---|
[C언어] 실습: 홀수/짝수 숫자 판단하기 (조건 연산자) (1) | 2020.12.09 |
[C언어] 문자열 입력받기: scanf(), gets() (0) | 2020.12.07 |
[C언어] 실습: 국어, 영어, 수학 점수를 입력받은 후, 총점과 평균 구하기 2 (0) | 2020.12.04 |
[C언어] 실습: 국어, 영어, 수학 점수를 입력받은 후, 총점과 평균 구하기 1 (0) | 2020.12.04 |