C언어 연산자

Ohyuchan·2023년 8월 7일
0
post-thumbnail

이번 포스팅에서는 연산자에 대해서 작성하였습니다.

연산자(operator)란?
주어진 식을 계산하여 결과를 얻어내는 과정을 연산이라고 하며, 연산을 수행하는 기호를 연산자라고 합니다.

⇲ 연산자와 피연산자
연산을 수행하려면 반드시 연산의 대상이 있어야 하는데, 이를 피연산자(operand)라고 합니다.

  • 연산자(operator) : 연산을 수행하는 기호(+,-,*,/ 등)
  • 피연산자(operand) : 연산자의 작업 대상(변수, 상수, 수식)

⇲ 연산자의 종류


※ 앞의 숫자는 연산 우선 순위를 나타냄

1. 1차 연산자 : (), [] ->
   () : () 괄호 안에 있는 내용을 가장 먼저 연산
2. 단항 연산자 : -, ++, --, !, sizeof(), ~, *
3 - 4. 산술 연산자 : +, -, *, /, %
5. 비트 이동 연산자 : <<, >>
6. 관계 연산자 <, >, <=, >=
7. 동등 연산자 : ==, !=
8 - 10. 비트 연산자 : |, ^, &
11 - 12. 논리 연산자 &&, ||1
13. (삼항)조건 연산자 : ?:
14. 대입 연산자 : =, +=, -=, *=. /= ...
15. 콤마 연산자 : ,

사용법


1. 1차 연산자

  1. 1차 연산자 : (), [] 👉 () : () 괄호 안에 있는 내용을 가장 먼저 연산

2. 단항 연산자


  1. 단항 연산자 : -, ++, --, !, sizeof(), ~, *
    항이 1개인 연산자

2-1. 부호 연산자

  1. -,+ (부호 연산자) : 부호를 반대로 바꿔주는 연산자(양수 -> 음수, 음수 -> 양수)
int c = 15;
int d = -c; // d는 -15가 됨

2-2. 증감 연산자

  1. ++, --(증감 연산자)) : (증가/감소) 연산자 피연산자의 값을 1 (증가/감소) 시킵니다.
  int number = 10;
  printf("<연산 전>\n");
  printf("number %d\n",number);

  number++; 

  printf("<연산 후>\n");
  printf("number %d\n",number);

2-3. 논리 부정 연산자

  1. ! (논리 부정 연산자) : 피연산자의 논리 값을 반대로 변경합니다.
	int x = 1;
    int y = 0;
    int result1 = !x; // result1은 0 (false)가 됨
    int result2 = !y; // result2은 1 (true)가 됨 1(0이 아닌 숫자)
    printf ("!0 = %d\n",result1);
    printf ("!0 = %d\n",result2);

2-4. 비트 단위 부정 연산자

  1. ~ (비트 단위 부정 연산자) : 피연산자의 비트를 모두 반전시킵니다.
	unsigned int e = 10; // 0000 1010 (2진수)
    unsigned int result3 = ~e; // 1111 0101 (2진수), 245 (10진수)

unsigned
자료형에 unsigned가 붙으면 부호가 없다는 의미가 되는데,
이는 곧 음의 부호(-)를 붙이지 않고 0 이상의 값만을 표현하겠다는 의미를 가지고 있다.

앞서 int의 32개 비트 중 하나의 비트가 부호를 나타내는데 사용된다고 했는데, unsigned가 붙게 되면 부호를 나타내는 비트가 필요 없어집니다.

따라서 unsigned int는 32개의 비트 모두를 절대값(이 경우 정수)을
나타내는데 사용된다. 2의 32제곱이 unsigned int의 최대값이 되는 것입니다.

2-5. 크기 지정 연산자

  1. sizeof (크기 지정 연산자) : 피연산자의 크기를 바이트 단위로 반환합니다.
	int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr); // size는 배열 arr의 전체 크기를 바이트 단위로 나타냄

2-6. 포인터 연산자

  1. * (포인터 연산자) : 포인터 변수를 선언할 때 사용하며, 해당 주소에 있는 값을 참조합니다.

3 ~ 4. 산술 연산자


3 - 4. 산술 연산자 : +, -, *, /, %

(+ 덧셈 연산자)

//덧셈 연산자 (+): 두 피연산자를 더합니다.
    int a = 5;
    int b = 10;
    int sum = a + b; // sum은 15가 됨

(- 뺄셈 연산자)

//뺄셈 연산자 (-): 첫 번째 피연산자에서 두 번째 피연산자를 뺍니다.
	int c = 20;
	int d = 7;
	int difference = c - d; // difference는 13이 됨

(* 곱셈 연산자)

//곱셈 연산자 (*): 두 피연산자를 곱합니다.
	int e = 4;
	int f = 3;
	int product = e * f; // product는 12가 됨

(/ 나눗셈 연산자)

//나눗셈 연산자 (/): 첫 번째 피연산자를 두 번째 피연산자로 나눕니다.
	int g = 20;
	int h = 5;
	int quotient = g / h; // quotient는 4가 됨

	//</ 나누기>
	//[정수] / [정수] = [정수 몫]
	//[실수] / [정수] = [실수 몫]
	//[정수] / [실수] = [실수 몫]
	//[실수] / [실수] = [실수 몫]

(% 나머지 연산자)

//나머지 연산자 (%): 첫 번째 피연산자를 두 번째 피연산자로 나눈 후의 나머지를 반환합니다.
	int i = 17;
	int j = 5;
	int remainder = i % j; // remainder는 2가 됨 (17을 5로 나눈 나머지)

5. 비트 이동 연산자


  1. 비트 이동 연산자 : <<, >>

비트 이동 연산자 <<와 >>는 C 언어에서 비트를 왼쪽으로 이동 또는 오른쪽으로 이동시키는 연산자입니다.

이 연산자들은 정수형 변수에 대해 사용됩니다.
비트 이동 연산자는 이동할 비트 수만큼 피연산자의 비트들을 이동시킵니다.

6. 관계 연산자 <, >, <=, >=


관계 연산자 <, >, <=, >=
크기 비교
관계 연산자의 결과 값은 논리 값

	int a = 5;
    int b = 10;

    // 작다 (<)
    if (a < b) {
        printf("a는 b보다 작습니다.\n");
    } else {
        printf("a는 b보다 크거나 같습니다.\n");
    }

    // 크다 (>)
    if (a > b) {
        printf("a는 b보다 큽니다.\n");
    } else {
        printf("a는 b보다 작거나 같습니다.\n");
    }

    // 작거나 같다 (<=)
    if (a <= b) {
        printf("a는 b보다 작거나 같습니다.\n");
    } else {
        printf("a는 b보다 큽니다.\n");
    }

    // 크거나 같다 (>=)
    if (a >= b) {
        printf("a는 b보다 크거나 같습니다.\n");
    } else {
        printf("a는 b보다 작습니다.\n");
    }

7. 동등 연산자 : ==, !=


  1. 동등 연산자 : ==, !=

C 언어에서 동등 연산자 == (equal to)와 != (not equal to)는 두 개의 값을 비교하여 결과가 참 또는 거짓인지를 판단하는 연산자입니다.

두 값이 서로 같은 경우에는 == 연산자는 참을 반환하고, != 연산자는 거짓을 반환합니다.

	int x = 5;
    int y = 10;

    // 동등 연산자 (==)
    if (x == y) {
        printf("x와 y는 서로 같습니다.\n");
    } else {
        printf("x와 y는 서로 다릅니다.\n");
    }

    // 부등 연산자 (!=)
    if (x != y) {
        printf("x와 y는 서로 다릅니다.\n");
    } else {
        printf("x와 y는 서로 같습니다.\n");
    }

8. 논리 연산자 &&, ||


&&(AND) : [논리 값 1] && [논리 값 2][논리값 1, 2]가 모두 참이면 참, 하나라도 거짓이면 거짓

||(OR) : [논리 값 1] || [논리 값 2][논리 값 1, 2]중 하나라도 참이면 참, 둘 다 거짓이면 거짓

9. 삼항(조건) 연산자

	int a = 5;
    int b = 10;

    // 삼항 연산자 (조건식 ? 참일 때의 값 또는 표현식 : 거짓일 때의 값 또는 표현식)
    //[논리 값] ? [참일 때의 값] : [거짓일 때의 값]
    int result = (a < b) ? a : b;

    printf("result = %d\n", result);

10. 대입 연산자 : =, +=, -=, *=. /= ...


	int number = 10;
    printf("<연산 전>\n");
    printf("number =  %d\n",number);

    //number +=8;
    // number = number + 8;
    //number/=2;
    // number = number / 2;

    printf("<연산 후>\n");
    printf("number =  %d\n",number);

11. 콤마 연산자


가장 마지막에 연산하는 연산자 변수 여러 개 선언할 때 사용
ex) int number1, number2;
ex) floast f1 = 5.1f, f2.8.82f;

profile
안녕하세요

0개의 댓글