본문 바로가기
2학년 2학기/c언어

4장 수식과 연산자

by kkkkk1023 2024. 10. 23.

1. 나눗셈 연산자

정수형 / 정수형 == 정수형(소수점 이하의 값은 버려진다.)

#include <stdio.h>

int main() {
    int a = 10;
    int b = 3;
    
    int result = a / b;  // 정수끼리 나누기, 소수점 이하 값은 버려짐

    printf("정수형 나눗셈: %d\n", result);  // 출력: 3
    return 0;
}

 

실수형 / 실수형 == 실수형

#include <stdio.h>

int main() {
    float a = 10.0;
    float b = 3.0;

    float result = a / b;  // 실수끼리 나누기

    printf("실수형 나눗셈: %.2f\n", result);  // 출력: 3.33
    return 0;
}

 

 

 

2. 증감 연산자

전위 증감 연산자와 후위 증감 연산자

증감 연산자 차이점 x가 5일 때의 식  x의 값 y의 값
++x 수식의 값은 증가된 x값이다. y = ++x 6 6
x++ 수식의 값은 증가되지 않은 원래의 x값이다.  y = x++ 6 5
--x 수식의 값은 감소된  x값이다. y = --x 4 4
x-- 수식의 값은 감소되지 않은 원래의 x값이다.  y = x-- 4 5

 

 

 

3. 대입 연산자

변수 = 수식
x = 10;

 

대입 연산자를 연속해서 사용될 수 있다. 아래와 같이 연속되어 3을 대입되는 문장을 작성할 수 있는데, 이 문장의 실행순서는 아래와 같다.

x = y = z = 3;

 

    1. z = 3

 

    2. y = z(z는 3인 상황)

 

    3. x = y(y는 3인 상황)

 

 

4. 복합 대입 연산자

복합 대입 연산자 의미
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y

 

 

Quiz) X *= Y + 1과 X %= X + Y를 풀어서 작성하면?

X = X * (Y + 1)

X = X % (X + Y)

 

 

 

5. 관계 연산자

: 두 개의 피연산자를 비교하는데 사용된다. 

 

연산 의미
x == y x와 y가 같은가?
x != y x와 y가 다른가?
x > y x가 y보다 큰가?
x < y x가 y보다 작은가?
x >= y x가 y보다 크거나 같은가?
x <= y x가 y보다 작거나 같은가?

 

 

x = y, x == y는 다른 것

: 왼쪽은 대입 연산자를 사용한 것이고, 오른쪽은 관계 연산자를 사용한것이다.

 

 

Quiz) (3 >= 2) + 5의 값은?

: (3 >= 2)는 참으로 1으로, 1 + 5는 6이다.

 

6. 비트 연산자(굉장히 중요)

연산자 연산자의 의미 설명
& 비트 AND 두개의 피연산자의 해당 비트가 모두 1이면 1, 아니면 0
| 비트 OR 두개의 피연산자의 해당 비트가 하나만 1이면 1, 아니면 0
^ 비트 XOR 두개의 피연산자의 해당 비트의 값이 같으면 0, 아니면 1
<< 비트 << 지정된 개수만큼 모든 비트를 왼쪽으로 이동한다. (값은 2배가 된다.)
>> 비트 >> 지정된 개수만큼 모든 비트를 오른쪽으로 이동한다.(값은 1/2배가 된다.)
~ 비트 NOT 0은 1로 만들고 1은 0으로 만든다.

 

 

7. 연산자 우선 순위(굉장히 중요)

 

  • 콤마 < 대입 < 논리 < 관계 < 산술 < 단항
  • 괄호 연산자는 가장 우선순위가 높다.
  • 모든 단항 연산자들은 이항 연산자들보다 우선순위가 높다.
  • 콤마 연산자를 제외하고는 대입 연산자가 가장 우선순위가 낮다.

 

 

 

8. 결합 규칙

[산술 연산자(좌에서 우로 결합)]

 

 

 

 

 

[대입 연산자(우에서 좌로 결합)]

 

 

 

 

9. 형변환

자동적인 형변환

: 컴파일러에 의하여 자동으로 수행되는 것

 

[올림 변환]

 

  • int에서 long으로 변환
  • int에서 float 또는 double로 변환

 

int a = 10;
double b = a;  // 'int'를 'double'로 변환 (올림 변환)

 

 

[내림 변환]

 

  • double에서 int로 변환
  • long에서 short로 변환

 

double a = 9.7;
int b = a;  // 'double'을 'int'로 변환 (내림 변환)

 

 

[서로 다른 자료형이 홉합하여 사용되는 경우의 자동 형변환]

int i = 10;
double d =1.2345
y = i + d; // 자동적인 형변환으로 인해 i는 10.0으로 변환되어 y는 10.234가 된다.

 

 

 

명시적인 형변환

: 프로그래머가 명시적으로 데이터의 형을 변환하는 것

주의할 점은 변수의 타입이 변경되는 것이 아니고 변수가 가지고 있는 데이터의 타입만 변경된다는 점이다. 

c언어는 정적 타입 언어이기 때문에, 타입이 한번 정해지면 그 변수의 타입은 변경이 불가능하다.

 

int x = 1;

(int)1.2345
(double)x
(long)(x+1) //2L이지만, x의 타입은 그대로 int타입이다!!!

 

'2학년 2학기 > c언어' 카테고리의 다른 글

7장 배열  (1) 2024.10.25
6장  (1) 2024.10.25
5장 조건문  (0) 2024.10.24
3장 변수와 자료형  (0) 2024.10.23
2장 기초사항  (0) 2024.10.23