Language/C

📌 Chapter 05 - 연산자 - 수식과 연산자

e-cko 2025. 5. 19. 15:19
반응형
반응형

1. 수식과 연산자

1) 수식 (Expression)

  • 수식(expression) 계산을 위한 피연산자(operand) 연산자(operator) 결합된 형태를 의미한다.
  • 피연산자 숫자나 문자를 의미하며, 실제로 계산에 사용되는 값이다.
  • 숫자 하나만 존재해도 수식이 있다. : 5

 

2) 연산자 (Operator)

  • 연산자는 연산의 형태에 따라 단항 연산자, 이항 연산자, 삼항 연산자 나뉜다.
  • 연산자 피연산자 사이에서 특정 연산을 수행하는 기호이다.

단항 연산자

  • +, -: 숫자의 부호를 나타낸다.
  • ++, --: 값을 1 증가(increment), 감소(decrement)시킨다.
    주의: 전위형(++a) 후위형(a++) 차이를 이해해야 한다.

이항 연산자

  • 왼쪽과 오른쪽에 개의 존재하며, 가장 일반적인 형태이다.
    : a + b, x * y

삼항 연산자

  • 조건 ? : 거짓 형태를 가진다.
  • 조건이 참이면 앞의 , 거짓이면 뒤의 선택한다.
    : a > b ? a : b a b 값을 선택한다.

⚙️ 연산자 우선순위

연산자가 문장에 여러 포함될 경우, 우선순위(priority) 연산 방향(associativity) 따라 계산 순서가 결정된다.

순위 연산자 종류 설명 방향
1 (), [], ->, ., ++, -- 함수 호출, 배열 인덱스, 포인터 접근, 증감 연산 L → R
2 ~, !, +, -, &, * 비트 NOT, 논리 NOT, 부호, 주소 포인터 R → L
3 (data type) 변환(Casting) R → L
4 *, /, % 곱셈, 나눗셈, 나머지 L → R
5 +, - 덧셈, 뺄셈 L → R
6 <<, >> 시프트 연산 L → R
7 <, >, <=, >= 비교 연산 L → R
8 ==, != 동등 비교 L → R
9 & 비트 AND L → R
10 ^ 비트 XOR L → R
11 | 비트 OR L → R
12 && 논리 AND L → R
13 || 논리 OR L → R
14 ?: 조건(삼항) 연산자 R → L
15 =, +=, -=, *=, /= 대입 복합 대입 R → L
16 , 콤마 연산자 L → R

⚠️ 주의: 우선순위가 낮은 연산자라도 괄호 () 사용하여 계산 순서를 명확히 해야 한다.


2. 산술 연산자와 대입 연산자

1) 산술 연산자

  • 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 연산을 수행한다.
  • 정수형을 0으로 나누면 오류 발생하며, 이는 컴파일러가 경고할 수도 있다.
  • 정수 ÷ 정수 결과는 소수점 이하가 제거된 정수이다.
  • 정수 + 실수, 실수 + 실수 연산 결과는 실수이다.
  • % 연산자 정수형 데이터에만 사용 있다.
  • printf()에서 % 자체를 출력하려면 '%%' 사용해야 한다.

초보자 주의

  • 5 / 2 결과는 2이다. 2.5 아니다!
  • 5.0 / 2 2.5이므로, 하나라도 실수형이면 실수 결과가 나온다.

2) 대입 연산자 (Assignment Operator)

  • ` = ` 연산자는 오른쪽 값을 왼쪽 변수에 저장하는 연산자이다.
  • 수학의 = 동등을 의미하지만, C 언어에서는 대입 의미이다.
  • 여러 대입을 연속으로 사용할 있다. : a = b = c = 1;
  • +=, -=, *=, /=, %= 등의 복합 대입 연산자(compound assignment) 수식을 간결하게 만든다.
    , 왼쪽에는 반드시 변수만 있다.

마무리 정리

1️⃣ 연산자는 단항, 이항, 삼항으로 구분된다.
2️⃣
삼항 연산자는 조건 ? : 거짓의 형태를 갖는다.
3️⃣
산술 연산은 정수/실수 여부에 따라 결과가 달라진다.
4️⃣ %
정수형에만 사용할 있다.
5️⃣
대입 연산자는 오른쪽 값을 왼쪽에 저장하며, 복합 대입 연산자가 존재한다.
6️⃣
연산자에는 우선순위 연산 방향 존재하므로 괄호를 적절히 활용해야 한다.


💻 예제 코드

#include <stdio.h>

 

int main() {

    int a = 10, b = 3;

    int sum, diff, mul, mod;

    float div;

 

    // 산술 연산

    sum = a + b;         // 덧셈

    diff = a - b;        // 뺄셈

    mul = a * b;         // 곱셈

    div = (float)a / b;  // 나눗셈 ( 변환 필요)

    mod = a % b;         // 나머지

 

    printf("덧셈: %d\n", sum);

    printf("뺄셈: %d\n", diff);

    printf("곱셈: %d\n", mul);

    printf("나눗셈: %.2f\n", div); // 소수 둘째 자리까지 출력

    printf("나머지: %d\n", mod);

 

    // 대입 연산자

    int x = 5;

    x += 2; // x = x + 2;

    x *= 3; // x = x * 3;

 

    printf("복합 대입 결과: %d\n", x);

 

    return 0;

}

 

 

반응형