포털:고등학교/정보·통신 계열 전문 교과(2015)/프로그래밍/연산자
연산이란?
편집▶일정한 규칙에 따라 계산하는것 c언어의 수식은 연산자, 피연산자로 조합되어 구성된다.
※ 연산자(할당, 증감, 관계, 조건, 논리, 비트, 시프트 등), 피연산자(변수, 상수 등)
연산자 우선순위
편집⑴괄호 안의 내용부터 처리
⑵상대적인 우선선위에 의해 처리
⑶산술연산자 ->조건연산자순으로 처리
⑷우선순의 동일한 경우 결합성에 의해 처리
우선순위 | 연산의 종류 | 예시 |
---|---|---|
괄호, 배열 | ( ) [ ] -> | |
↑ | 단항 연산자 | !, ~, + +, - -, (포인터), &(주소), sizeof( ), (자료형) |
높음 | 산술 연산자 | , /, %,+, - |
시프트 연산자 | <<, >> | |
↕ | 관계 연산자 | <, >, <=, >= |
비트 연산자 | &,^ | |
낮음 | 논리 연산자 | && |
↓ | 조건 연산자 | ( )? : |
할당 연산자 | = |
조건연산자, 할당연산자의 결합성(좌 <- 우) 이외 다른 모든 결합성(좌 -> 우)
연산자의 기능과 사용법
편집⑴ 산술연산자
편집- 덧셈, 뺄셈, 곱셈, 나눗셈 등의 연산을 하기 위한 연산자 곱하기는 *로, 나누기는/로 표시
#include <stdio.h> int main( ) { int i = 13, j = 5; printf("%d %d %d %d %d", i+j, i-j, i*j, i/j, i%j); return 0; }
[실행결과 18 8 65 2 3]
⑵ 할당연산자
편집- '='를 중심으로 오른쪽의 값이나 수식을 계산하여 왼쪽변수에 저장하라는 의미
#include <stdio.h> int main( ) { int i = 13, j = 5; i = j; printf("%d\n", i); return 0; }
[실행결과 5]
⑶ 증감연산자
편집- 변숫값을 1씩 증가 또는 감소시키는 연산자
#include <stdio.h> int main( ) { int i = 13, j = 5, temp, a = 10, b = 20, c = 30, d = 40; temp = ++i; printf("%d %d\n", temp, i); temp = i++; printf("%d %d\n", temp, i); temp = --j; printf("%d %d\n", temp, j); temp = j--; printf("%d %d\n", temp, j); ++a; b++; --c; d--; printf("%d %d %d %d", a, b, c, d); return 0; }
[실행결과 14 14 14 15 4 4 4 3 11 21 29 39]
⑷ 관계연산자
편집- 두 개 이상의 값을 서로 비교하는 연산자 *비교 결과는 1(참)또는 0(거짓)으로 나타남
연산자 | 설명 | 연산자 | 설명 |
---|---|---|---|
A > B | A는 B보다 크다. | A > = B | A는 B보다 크거나 같다. |
A < B | A는 B보다 작다. | A < = B | A는 B보다 작거나 같다. |
A = = B | A와 B는 서로 같다. | A ! = B | A와 B는 같지 않다. |
#include <stdio.h> int main( ) { int i = 13, j = 5; printf("%d %d %d %d %d %d", i<j, i>j, i<=j, i>=j, i!=j, i= =j); return 0; }
[실행결과 0 1 0 1 1 0 ]
⑸ 조건연산자
편집- 조건식에 따라 참과 거짓 중 하나를 수행하는 연산자 (연산 결과가 참이면 문장1을 실행하고, 거짓이면 문장 2를 실행한다.)
#include <stdio.h> int main( ) { int i = 13, j = 5, result; result = i < j ? 10 : 100; printf("%d", result); return 0; }
[실행결과 100 ]
⑹ 논리연산자
편집- 두 개 이상의 값을 비교하여 참이면 1, 거짓이면 0을 나타낸다.
&& : 두 개의 연산 값이 모두 참일 때만 결과가 참(1)이다. || : 두 개의 연산 값 중 하나 이상이 참일 때 결과가 참(1)이다. ! : 연산 값이 참이면 거짓(0), 거짓이면 참(1)이 된다.
#include <stdio.h> int main( ) { int i = 13, j = 5, temp; printf("%d %d\n", i = = 13 && j = = 5, i = = 13 && j = = 4); printf("%d %d\n", i = = 13 || j = = 4, i = = 12 || j = = 4); temp = i; printf("%d ", !temp); temp = 0; printf("%d", !temp); return 0; }
[실행결과 1 0 1 0 0 1 ]
⑺ 비트연산자
편집- 비트 단위 논리 연산을 수행하는 연산자
연산자 | 설명 | 예시 | 설명 | 설명 |
---|---|---|---|---|
& | 두 수에 대한 비트 단위 and 연산을 수행 | a&b | 각 자리수 모두 1인경우 1로 표시 이외 0 | a&b=0101 |
l | 두 수에 대한 비트 단위 or 연산을 수행 | aㅣb | 자리수 둘 중 하나만 1이면 1로 표시 이외 0 | aㅣb=1101 |
^ | 두 수에 대한 비트 단위 xor 연산을 수행 | a^b | 같을 경우 0으로 이외 1 | a^b=1000 |
~ | 해당 값에 대한 1의 보수를 구함 | ~a | 0->1 1-> 0 | ~a=0010 |
1 1 0 1 0 1 0 1 --------
#include <stdio.h> int main( ) { int i = 13; int j = 5; printf("%d %d %d %d", i&j, i|j, i^j, ~i); return 0; }
[실행결과 5 13 8 -14]
⑻ 시프트연산자
편집- 지정된 비트 수만큼 왼쪽 또는 오른쪽으로 이동하는 연산자
#include <stdio.h> int main( ) { int i = 13; int j = 5; printf("%d %d %d %d", i<<2, i>>2, j<<3, j>>3); return 0; } [실행결과 52 3 40 0]