본문 바로가기

Learn & Develop/C

C언어 - 연산자(1)

연산자

 특정 연산을 요구할 때 사용하는 약속된 기호.

 

 

 

대입 연산자 ' = '

 우리가 아는 흔한 기호. 연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입한다.

ex) int num = 10;

 이렇게 되면 변수 num은 정수 '10' 이라는 값을 저장하게 된다.

 

 

산술 연산자 ' +, -, *, /, % '

 왼쪽부터 차례대로 '덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 값 반환'을 의미한다.

 결합방향은 왼쪽에서 오른쪽으로.

//예제 1
#include <stdio.h>
int main(void){
    int num1 = 20, num2 = 10; // 정수형 4바이트 자료형 num1, num2 변수에 각각 20, 10 대입
    
    int add = num1 + num2; // 두 피연산자 값을 더함
    int sub = num1 - num2; // 왼쪽 피연산자에서 오른쪽 피연산자 값을 뺌
    int mul = num1 * num2; // 두 피연산자의 값을 곱함
    int div = num1 / num2; // 왼쪽 피연산자 값을 오른쪽 피연산자 값으로 나눔
    int rem = num1 % num2; // 나눴을 때 얻게되는 나머지값 반환
    
    printf("add : %d, sub : %d, mul : %d, div : %d, rem : %d\n", add, sub, mul, div, rem);
    return 0;
}

//실행 결과

add : 30, sub : 10, nul : 200, div : 2, rem : 0

 

 

부호 연산자

 수가 양을 뜻하는지 음을 뜻하는지 표시하기 위한 연산자. 별 거 없다.

ex) -3, +5

 

 

증가, 감소 연산자 ' ++, -- '

 변수에 저장된 값을 1 증가 및 감소시키는 경우에 사용되는 연산자.

 연산자가 변수의 앞에 붙냐 뒤에 붙냐에 따라 쓰임새가 달라진다.

// 예제 2
#include <stdio.h>
int main(void){
	int num1 = 1, num2 = 5; // num1과 num2에 각각 1, 5 대입
    
    printf("%d, %d\n", num1, num2);
    printf("%d, %d\n", ++num1, --num2); // 값을 1 증가 및 감소 후 과정 진행

	printf("%d, %d\n", num1, num2);

    printf("%d, %d\n", num1++, num2--); // 과정 진행 후 값을 1 증가 및 감소
    printf("%d, %d\n", num1, num2);
    
    return 0;
}

//실행 결과

1, 5
2, 4 <- 먼저 값이 증감됨 (선증감 후과정)
2, 4
2, 4 <- 값이 증감되지않고 유지됨 (선과정 후증감)
3, 3

 

 

관계 연산자 ' <, >, ==, !=, <=, >= '

 대소와 동등의 관계를 따지는 연산자.

 만약 조건을 만족한다면 1(=True), 만족하지 않는다면 0(=False) 를 반환한다.

// 예제 3
#include <stdio.h>
int main(void)
{
	int num1 = 10, num2 = 20;
	int result1, result2, result3, result4, result5, result6;

	result1 = (num1 > num2); // num1이 num2보다 큰가?
    result2 = (num1 < num2); // num1이 num2보다 작은가?
	result3 = (num1 == num2); // 둘이 서로 같은가?
	result4 = (num1 != num2); // 둘이 서로 다른가?
    result5 = (num1 >= num2); // num1이 num2보다 크거나 같은가?
    result6 = (num1 <= num2); // num1이 num2보다 작거나 같은가?
	
	printf("%d %d %d %d %d %d\n", result1, result2, result3, result4, result5, result6);
	return 0;
}

//실행 결과

0 1 0 1 0 1

 

 

논리 연산자 ' &&, ||, ! '

 '논리곱, 논리합, 논리부정'을 표현하는 연산자.

 이것도 관계 연산자랑 비슷하게 논리에 맞는다면 1(=True), 맞지 않는다면 0(=False)를 반환한다. 

// 예제 4
#include <stdio.h>
int main(void){
	int num1 = 10, num2 = 20;
    int rslt1, rslt2, rslt3;
    
    // 'A && B', A와  B 둘 중에 하나라도 True가 안되면 False를 반환
    // 둘 다 True면 True를 반환
    rslt1 = (num1 > num2 && num1 < num2);
    
    // 'A || B', A나 B 둘 중에 하나라도 True면 True를 반환
    // 둘 다 False면 False를 반환
    rslt2 = (num1 == num2 || num1 != num2);
    
    // '!A', A가 True면 False를 반환, False면 True를 반환
    rslt3 = !(num1 <= num2);
    
    printf("%d %d %d", rslt1, rslt2, rslt3);
	return 0;
}

//실행 결과

0 1 0

 

 

콤마 연산자 ' , '

 둘 이상의 변수를 동시에 선언하거나, 둘 이상의 문장을 한 행에 삽입하는 경우에 사용되는 연산자.

 다른 연산자들과 달리 '구분'을 목적으로 주로 사용된다.

// 예제 5
#include <stdio.h>
int main(void){
	int num1= 10, num2 = 20, num3 = 30; // 둘 이상의 변수 동시 선언(자료형 int로 묶임)
    
    printf("&d", num1), printf("%d", num2), printf("%d", num3); // 둘 이상의 문장을 한 행에 삽입
	return 0;
}

 

 

아직 많이 미숙합니다.

오타, 지적 환영합니다.