조건, 비트 연산자, 연산 우선순위 및 방향
조건 연산자
조건 연산자는 유일한 삼항 연산자로 ? 와 : 기호를 함께 사용한다.
- a = 10, b = 20을 대입하면 10 > 20은 거짓이다.
- 조건 연산자에서 거짓일 때는 세 번째 값(b)을 선정한다.
- 선정한 세 번째 값(b)을 res에 대입한다.
조건 연산자의 피연산자에 대입식 사용하기
조건 연산자의 피연산자에 대입식을 직접 사용할 수도 있다
바람직한 사용법
(a>b) ? (res1 = a) : (res2 = b);
참일 때와 거짓일 때 그 결과를 반영하는 대상이 다를 때 유용하다.
조건 연산자는 코드를 간략히 만들어주는 효과가 있으며 매크로 함수에 사용하면 좋으나 가독성을 떨어뜨릴수도 있으므로 필요한 곳에만 사용하는 것이 중요하다.
비트 연산자
비트 연산자는 데이터를 비트 단위로 연산한다.
#include <stdio.h>
int main(void)
{
int a = 10;
int b = 12;
printf("a & b : %d\n", a & b);
printf("a ^ b : %d\n", a ^ b);
printf("a | b : %d\n", a | b);
printf("~a : %d\n", ~a);
printf("a << 1 : %d\n", a << 1);
printf("a >> 2 : %d\n", a >> 2);
return 0;
}
- 비트별 논리곱 연산자
printf("a & b : %d\n", a & b);
& 연산은 두 비트가 모두 1인 경우에만 1로 계산한다
- 비트별 배타적 논리합 연산자
printf("a ^ b : %d\n", a ^ b);
^ 연산은 두 비트가 서로 다른 경우만 1로 계산한다
- 비트별 논리합 연산자
printf("a | b : %d\n", a | b);
| 연산은 두 비트 중에서 하나라도 참이면 1로 계산한다
- 비트별 부정 연산자
printf("~a : %d\n", ~a);
~ 연산은 1은 0으로 바꾸고 0은 1로 바꾼다.
- 비트 이동 연산자
printf("a << 1 : %d\n", a << 1);
printf("a >> 2 : %d\n", a >> 2);
<< 연산자는 왼쪽으로 이동시킨다 ( 00010100 = 20 )
>> 연산자는 오른쪽으로 이동시킨다 ( 00000010 = 2 )
연산자 우선순위와 연산 방향
하나의 수식에서 2개 이상의 연산자가 함께 쓰일 떄는 연산자의 우선순위에 따라 연산된다.
- 단항 연산자 > 이항 연산자 > 삼항 연산자 ( 3개의 피연산자를 필요로 하는 연산자 )
- 산술 연산자 > (비트 이동 연산자) > 관계 연산자 > 논리 연산자
삼항 연산자
조건식 ? 반환값1 : 반환값2
=> 물음표(?) 앞의 조건식에 따라 결괏값이 참(true)이면 반환값1을 반환하고, 결괏값이 거짓(false)이면 반환값2를 반환합니다.
기타 연산자 그림
'C 언어 > [책 정리] 혼자 공부하는 C언어' 카테고리의 다른 글
if문 활용과 switch ~ case 문 (0) | 2022.12.06 |
---|---|
if 문 (0) | 2022.12.06 |
그 외 유용한 연산자 (1) (0) | 2022.12.01 |
산술 연산자, 관계 연산자, 논리 연산자 (2) (0) | 2022.12.01 |
산술 연산자, 관계 연산자, 논리 연산자 (1) (0) | 2022.12.01 |