0.시작하기 앞서
이번 포스팅에서는 산술, 대입, 복합대입, 콤마 연산자와 같이 이미 알거나 다룬내용은 물론
증감, 관계, 논리, 조건, 비트 연산자 역시 다룰 것이다.
-피연산자수에 따른 연산자 분류
단항연산자: 피연산자 수가 1개. 대표적으로는 증감연산자가 있다.
ex) x++, x--, ++x, --x
이항연산자: 피연산자 수가 2개. 우리가 다루는 대부분의 연산이 이항이다
ex) x< y, x+y, x=y 등
삼항연산자: 피연산자 수가 3개. 대표적으로는 조건연산자가 있다.
ex) x? y : z
1. 산술, 대입, 콤마연산자
산술연산이란 덧셈, 나눗셈과 같이 기본적인 연산을 의미한다.
산술연산 | 연산자 | c에서의 수식 | 수학에서의 기호 |
덧셈 | + | x+y | x+y |
뺄셈 | - | x-y | x-y |
곱셈 | * | x*y | xy 혹은 x×y |
나눗셈 | / | x/y | x/y 혹은 x÷y |
나머지 | % | x%y | x mod y |
대입연산(assignment operation)은 변수에 값을 저장해주는 연산이다.
앞서 소개한 변수 초기화 역시 대입연산에 해당된다. (변수에 값을 저장했으니..)
대입연산은 오른쪽에서 왼쪽 방향으로 이루어지며, 기호는 '='이다.(수학 기호인 =와는 다르다.)
구체적인 내용은 https://eigenarea.tistory.com/5 를 참조하자.
콤마연산자(,)는 말그대로 콤마로 내용을 구분시켜주는 연산자이다.
콤마 왼쪽에서 오른쪽 순으로 실행된다.
ex)
x=(2+5,5-2);
printf("%d",x);
>>>3 //콤마 뒤에 실행된 5-2가 결과값으로서 나옴
x=2+5,5-2;
printf("%d",x);
>>>7 //x=2+5라는 대입연산 후에, 5-2라는 아무의미없는 산술연산을 한 결과이다
printf("Thank"),printf(" You");
>>>Thank You //Thank를 출력한 후에 You를 출력함
2. 복합대입연산자
복합대입연산자란 산술연산자 등의 연산자와 대입연산자를 합쳐놓은 연산자이다.
예를 들어 x+=y라면, x에 더할(+)값은(=) y라는 의미이다.
의미 | 연산자 |
x = x + y | x += y |
x = x - y | x -= y |
x = x * y | x *= y |
x = x / y | x /= y |
x = x % y | x %= y |
x = x & y | x &= y |
x = x | y | x |= y |
x = x ^ y | x ^= y |
x = x >> y | x >>= y |
3. 증감연산자
위의 표에서 상술한 것과 같이 pre-fix의 경우ㅍ(++x, --x) x에 1을 더하거나 뺀 연산이 명령어에서 즉각 반영되어 결과로 나타나지만, post-fix의 경우(x++, x--) 계산 결과가 즉각 반영되지 않고, 다음 명령어부터 변화된 x값이 적용된다.
x=1;
printf("%d",++x);
>>>2 //계산결과가 바로 반영된다.
x=1;
printf("%d",x++);
printf("%d",x);
>>>
1
2 //계산결과가 명령어에서 바로 반영되지않고 다음 명령어부터 반영된다.
4. 관계 / 논리연산자
-관계연산자
관계연산자란 두 피연산자를 비교하는 연산자
결과가 참(true)이면 1을 결과값으로 내고 거짓(false)이면 0을 결과값으로 낸다.
연산자 | 의미 | 사용 예 |
== | x와 y가 같은가? | x == y |
!= | x와 y가 다른가? | x != y |
> | x가 y보다 큰가? | x > y |
< | x가 y보다 작은가? | x < y |
>= | x가 y보다 크거나 같은가? | x >= y |
<= | x가 y보다 작거나 같은가? | x <= y |
printf("%d", 1==2);
>>>0 //거짓
printf("%d", 1!=2);
>>>1 //참
printf("%d", 1<2);
>>>1 //참
printf("%d", 1>2);
>>>0 //거짓
printf("%d", (3>=2)+1);
>>>2 //1(참) +1
-논리연산자
논리연산자란 여러 개의 조건을 조합하여 참, 거짓을 따지는 연산
마찬가지로 결과값은 참이면 1, 거짓이면 0
피연산자의 경우 0이면 거짓, 0이 아니면 참 (3 ->참, -1 ->참)
사용 예 | 의미 |
x && y | AND연산, x와 y 모두 참이면 참, 그렇지 않으면 거짓 |
x || y | OR연산, x나 y 중 하나라도 참이면 참, 모두 거짓이면 거짓 |
!x | NOT연산, x가 참이면 거짓, 거짓이면 참 |
ex) x=-1, y=0이라 했을 때,
x&&y == 0 (거짓)
x || y == 1 (참)
!x == 0 (거짓)
!y == 1 (참)
주의할 점
2<x<5 와 같은 비교연산자를 입력했을 경우 논리적으로 잘못된 명령어이다.
2<x<5는 ((2<x)<5)라는 의미로 2<x는 무조건 0 or 1이므로 (2<x)<5는 1이 된다.
바른 표현으로는 (2<x) && (x<5)가 있다.
5. 조건연산자
exp1 ? exp2 : exp3
조건연산자는 위와 같이 exp1의 값이 참이면 exp2를 반환하고 거짓이면 exp3를 반환하는 연산자이다.
이는 다양하게 사용할 수 있는데,
absolute_value = (x>0)? x : -x; //절댓값 계산
max_value = (x>y)? x : y; //최댓값 계산
min_value = (x<y)? x : y; //최솟값 계산
등등 여러가지 간편하게 사용할 수 있다.
'CS > C언어' 카테고리의 다른 글
[C언어] 5. 선택문(1) - if문 (1) | 2024.06.05 |
---|---|
[C언어] 4(2) - 연산자(2) - 비트연산자, 연산자 우선순위 (0) | 2024.06.05 |
[C언어] 3. 자료형(2) - 실수, 형 변환 (0) | 2024.06.04 |
[C언어] 3. 자료형(1) - 정수, 상수, 문자 (0) | 2024.06.03 |
[C언어] 2. 변수와 자료형 기초(2) (0) | 2024.06.03 |