1.관계 연산자
관계 연산자는 피 연산자들 간의 대소와 동등의 관계를 판명 하여 주는 기능을 한다. 예컨대 , x와 y라는 변수 혹은 숫자들이 있는 경우 그들 간에 누가 더 큰지 , 작은지 , 아니면 같은지 등을 따진다. 그리고 피 연산자의 값을 비교하기 때문에 ‘비교 연산자’ 라고도 한다.
연산자 | 연산자의 역할 | 연산 방향 |
< | 예) a < b a가 b 보다 작은가 | —> |
> | 예) a > b a가 b 보다 큰가 | —> |
== | 예) a == b a가 b 와 같은가 | —> |
!= | 예) a != b a가 b 와 다른가 | —> |
<= | 예) a <= b a가 b 보다 같거나 작은가 | —> |
>= | 예) a >= b a가 b 보다 같거나 큰가 | —> |
관계 연산자는 주어진 관계 조건을 충족하면 1을 , 충족 못 하면 0 을 반환한다.
여기서 1 은 true(참) , 0은 false(거짓) 을 의미한다. 그래서 조건을 충족하면 참(true)을 그렇지 않으면 거짓(false)을 산출한다. 보통 1 과 0 이라는 표현 보다는 참 거짓을 많이 사용한다.
2.논리 연산자
논리 연산자는 논리곱(AND) , 논리합(OR) , 논리 부정(NOT)을 표현하는 기능을 한다.
연산자 | 연산자의 역할 | 연산 방향 |
&& | 예) a && b a 와 b 가 전부 참이면 참을 반환 한다. | —> |
|| | 예) a|| b a 와 b 중 한 개라도 참이면 참을 반환 한다. | —> |
! | 예) !a a가 참이면 거짓을 a 가 거짓이면 참을 반환 한다. | <— |
위 코드 9,10 행에서는 관계 연산자가 논리 연산자보다 우선적으로 연산 된다. 연산자들 간에도 우선 순위가 있다. 지금은 그냥 넘어가자.
11행에서는 변수 num 1의 값을 논리 부정하고 있는데 정수 10을 부정 한다는 게 얼핏 이해가 안 갈 수 있다. 그런데 , C언어에서는 0 이 아닌 값은 전부 true(참)으로 본다. 따라서 10 은 참으로 간주되고 그 논리 부정 값은 0 이 나오는 것이다.
3.콤마 연산자
이 것은 두 개 이상의 변수를 동시에 선언하거나 , 두 개 이상의 C 언어 문장을 한 행에 삽입할 경우에 사용된다. 또한 , 두 개 이상의 인자(매개 변수)를 함수로 전달할 경우에도 사용한다. 즉 콤마 연산자는 연산 결과의 산출이 아닌 문법적인 ‘구별’을 주된 기능으로 하는 연산자라고 할 수 있다.
int number 1 , number 2 , number 3 ;
콤마 연산자를 이용하여 변수 3개를 선언하고 있다.
printf(” Hello “) , printf( ” Happy “) ;
콤마 연산을이용하여 2 개의 문장을 사용 할 수 있다.
4.연산 순위와 연산 방향
다양한 C언어의 연산자들 간에는 순위가 있다. 산술 연산자(+, – , * , /, %)간에는 덧셈 뺄셈보다는 곱셈 , 나눗셈 , 나머지 연산이 우선한다. 그러면 , 순위가 동일한 곱셈 , 나눗셈 , 나머지 들 간의 순위는 어떨까? 여기서 연산 방향의 개념이 나온다. 즉 순위가 동일한 것 간에는 왼쪽에서 오른쪽으로 연산 된다. 예컨대 ,
3 * 3 / 3 % 2 의 경우에 동일한 연산 순위를 갖고 있으므로 그냥 좌측에서 우측으로 순서대로 연산 하면 된다. 즉 3*3 은 9 , 9/3은 3, 3%2는 1 이 된다. 그러나 C 언어에서 연산 순위가 이미 정해져 있지만 그 순위를 변경하고 싶다면 괄호 ( ) 기호를 이용하면 그 순위를 변경할 수 있다.
예컨대 , 3*(1+2) /3 의 경우 ( ) 때문에 덧셈 연산이 가장 먼저 수행 된다.
연산 순위에 관한 큰 흐름은 기억할 필요가 있다.
첫째,피 연산자의 수가 적은 것(단항 연산자)이 많은 것(이항 연산자)보다 우선 한다. 둘째, 산술 연산자> 관계 연산자 > 논리 연산자 의 순위다.
연산 순위와 방향을 달달 외우는 것은 무의미하다. 의심이 나거나 필요한 경우에 그때 그때 옆의 링크를 참조하는 것이 좋다. 연산 우선 순위 링크
정확한 개념 .. 감사합니다.
소중한 댓글 감사합니다. 부자 되십시요