연산자

BANG·2020년 11월 24일

C 기본

목록 보기
3/7

대입 연산자(=)

  • 연산자(=) 뒤에 있는 값을, 연산자 앞의 변수에 대입
# include<stdio.h>	

int main() 
{
    int num1 = 5;
    printf("%d", num1);
}

산술 연산자

# include<stdio.h>	

int main() 
{
    int num1 = 10;
    int num2 = 2;
    
    printf("%d + %d = %d\n", num1, num2, num1 + num2);
    printf("%d - %d = %d\n", num1, num2, num1 - num2);
    printf("%d * %d = %d\n", num1, num2, num1 * num2);
    
    // 연산자 / : 나눗셈의 몫
    // 연산자 % : 나눗셈의 나머지
    printf("%d / %d = %d\n", num1, num2, num1 / num2);
    printf("%d % %d = %d\n", num1, num2, num1 % num2);
}

증감 연산자

  • 값을 1 증가 또는 감소시키는 연산자
  • 삽입된 위치에 따라 의미가 다름
# include<stdio.h>	

int main() 
{
    int num1 = 5;
    int num2 = 5;
    
    printf("num1 : %d\n", num1);
    printf("num1++ : %d\n", num1++);	// 후위 증가
    printf("num1 : %d\n", num1);
    
    printf("num2 : %d\n", num2);
    printf("++num2 : %d\n", ++num2);	// 전위 증가
    printf("num2 : %d\n", num2);
    
    printf("num1 : %d\n", num1);
    printf("num1-- : %d\n", num1--);	// 후위 감소
    printf("num1 : %d\n", num1);
    
    printf("num2 : %d\n", num2);
    printf("--num2 : %d\n", --num2);	// 전위 감소
    printf("num2 : %d\n", num2);
}

  • 소괄호 등의 영향을 받지 않음
  • 다음 문장으로 넘어가야 증감이 이루어짐
# include<stdio.h>	

int main() 
{
    int num1 = 10;
    int num2 = (num1--) + 2;
    
    printf("num1 : %d\n", num1);	// 9
    printf("num2 : %d\n", num2);	// 13
}

복합 대입 연산자

# include<stdio.h>	

int main() 
{
    int num1 = 2, num2 = 4, num3 = 6;
    
    num1 += 3;	// num1 = num1 + 3;
    num2 *= 4;	// num2 = num2 * 4;
    num3 %= 5;	// num3 = num3 % 5;
    
    printf("result : %d, %d, %d\n", num1, num2, num3);
}

관계 연산자

  • 조건을 만족하면 1(True), 만족하지 않으면 0(False) 반환
  • 조건을 만족하면 True(1), 만족하지 않으면 False(0) 반환
# include<stdio.h>	

int main() 
{
    int num1 = 10;
    int num2 = 12;
    int result1, result2, result3;
    
    result1 = (num1 == num2);
    result2 = (num1 <= num2);
    result3 = (num1 > num2);
    
    printf("result1 : %d\n", result1);
    printf("result2 : %d\n", result2);
    printf("result3 : %d\n", result3);
}

논리 연산자

연산자예시기능
&& (논리곱)A && BA와 B모두 '참'이면 결과도 '참'
|| (논리합)A || BA와 B둘 중 하나라도 '참'이면 결과도 '참'
! (논리부정)!AA가 '참'이면 결과는 '거짓', A가 '거짓'이면 결과는 '참'
# include<stdio.h>	

int main() 
{
    int num1 = 10;
    int num2 = 12;
    int result1, result2, result3;
    
    result1 = (num1==10 && num2==12);
    result2 = (num1<12 || num2>12);
    result3 = (!num1);
    
    printf("result1 : %d\n", result1);
    printf("result2 : %d\n", result2);
    printf("result3 : %d\n", result3);
    
}

비트 연산자

  • 비트(2진수) 단위의 연산을 수행
연산자예시기능
~ (부정)~(11000011)(00111100)
& (그리고)(00001101) & (00000011)(00000001), 같은 자리가 모두 1일 경우만 1
| (또는)(11001100) | (00110000)(11111100), 같은 자리가 둘 중 1개라도 1이면 1
^ (배타적)(11001111) ^ (00000011)(11001100), 같은 자리가 서로 다르면 1, 같으면 0
<< (왼쪽 시프트)(00001111) << 3(01111000), 왼쪽으로 숫자 이동하고 오른쪽에 새로 생기는건 0으로 채워짐, 10진수로 확인해보면 2의 배수가 됨
>> (오른쪽 시프트)(00001111) >> 3(00000001), 오른쪽으로 숫자 이동하고 왼쪽에 새로 생기는건 0으로 채워짐, 10진수로 확인해보면 2로 나눈 값이 됨

연산자 우선순위

1순위: ++, -- (증감 연산자)
2순위: !, ~ (부정 연산자)
3순위: *, /, %(사칙 연산에서 곱하기, 나누기)
4순위: +, -(사칙 연산에서 더하기, 빼기)
5순위: <<, >> (비트 연산의 시프트 연산)
6순위: <, <=, >, >= (비교 연산자, 크기 비교)
7순위: ==, != (비교 연산자, 같은지 비교)
8순위: 비트, 논리, 삼항 연산자
9순위: 삼항 연산자

profile
Record Everything!!

0개의 댓글