IT

기초컴퓨터프로그래밍 C언어(4)-수식과연산자

배채 2024. 12. 31. 11:40

목차

  1. 산술 연산자
  2. 관계 연산자
  3. 논리 연산자
  4. 조건 연산자

일반 수학적 표현과C언어 수식은다릅니다. C에서는 연산자 생략이 불가능해요.

예를들어 '철수야물떠와라'이러면 철수가 알아서 물을 잘 떠오겠죠?

근데 컴퓨털한테는 '컴퓨터야 너의 위치를 기준으로 x축으로5만큼 떨어진 곳에서 100ml컵을이용해 삼다수를 떠와'이런식으로 명령해줘야 해요.

수학에서는 2a+3a=5a이잖아요? 컴퓨터는 B=2*a+5*a이렇게 명령해줘야합니다. 앞서 포스팅에서 언급햇듯 컴퓨터에서 =는 같다'equal'의뜻이 아니라 '넣는다'입니다.

이와같이 수학과 의미가 다른 연산자를 소개할게요.

산술 연산자 (Arithmetic Operators)

  • +: 덧셈
  • -: 뺄셈
  • \*: 곱셈
  • /: 나눗셈
  • %: 나머지

관계 연산자 (Relational Operators)

  • ==: 같다
  • !=: 같지 않다
  • >: 크다
  • <: 작다
  • >=: 크거나 같다
  • <=: 작거나 같다

논리 연산자 (Logical Operators)

  • &&: 논리 AND
  • ||: 논리 OR
  • !: 논리 NOT

비트 연산자 (Bitwise Operators)

  • &: 비트 AND
  • |: 비트 OR
  • ^: 비트 XOR
  • ~: 비트 NOT
  • <<: 왼쪽 시프트
  • >>: 오른쪽 시프트

할당 연산자 (Assignment Operators)

  • =: 값 할당
  • +=: 더하고 할당
  • -=: 빼고 할당
  • \=*: 곱하고 할당
  • /=: 나누고 할당
  • %=: 나머지 할당

우리는 기초를 배우는거니 산술연산자와 관계연산자, 논리연산자를 배워보도록 해요.(빨간색으로 표시함)

#include<stdio.h>
int main(void)
{
	int x, y, result;
	printf("enter ingeger 2\n");
	scanf("%d %d", &x, &y);

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

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

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

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

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

	return 0;
}

출력화면

여기서 잠깐 볼 코드!

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

%%가 두개지요? %를 하나만쓰면

이런식으로 출력됩니다. C 언어에서 % 문자는 문자열 포맷에서 특별한 의미를 갖기 때문에, 실제 % 문자를 출력하려면 %%를 사용해야 합니다. 즉, printf 함수에서 %%는 하나의 %로 해석되어 출력됩니다. 이해되셨죠?

다음은 증감연산에대해 설명할게요. 증감연산자 내용은 그리 대단한건없고, 변수의 값을 1씩 증가시키거나 감소시키는 데 사용되는 연산자입니다.

증감연산자의 종류라고 표를 정리해주긴 하는데, 외울필요까진없고 이해하고넘어가시면 됩니다. 전위연산자는 먼저 1값을 증가시키고 후위연산자는 나중에 1씩증가시킵니다. 예제를 보면서 이해하죠.

  • 증가 연산자 (++): 변수의 값을 1 증가시킵니다.
    • 전위 증가 연산자 (prefix increment): ++x
    • 후위 증가 연산자 (postfix increment): x++
  • 감소 연산자 (--): 변수의 값을 1 감소시킵니다.
    • 전위 감소 연산자 (prefix decrement): --x
    • 후위 감소 연산자 (postfix decrement): x--
int x = 5;
int y;

// 전위 증가 연산자
y = ++x; // x는 먼저 증가하고, y는 6이 됩니다.
printf("x = %d, y = %d\n", x, y); // 출력: x = 6, y = 6

x = 5; // x를 다시 5로 초기화

// 후위 증가 연산자
y = x++; // y는 먼저 할당되고, x는 이후 증가합니다.
printf("x = %d, y = %d\n", x, y); // 출력: x = 6, y = 5

x = 5; // x를 다시 5로 초기화

// 전위 감소 연산자
y = --x; // x는 먼저 감소하고, y는 4가 됩니다.
printf("x = %d, y = %d\n", x, y); // 출력: x = 4, y = 4

x = 5; // x를 다시 5로 초기화

// 후위 감소 연산자
y = x--; // y는 먼저 할당되고, x는 이후 감소합니다.
printf("x = %d, y = %d\n", x, y); // 출력: x = 4, y = 5

다음은 부동 소수점 연산자입니다.

부동소수점 연산에서는 자릿수 차이로 인해 정확한 비교가 어려운 경우가 많기 때문에, fabs 함수를 사용하여 두 값의 차이를 구하고 그것이 특정 작은 값보다 작은지를 확인합니다. 이를 통해 두 부동소수점 값이 거의 같은지를 비교합니다.

예를 들어, fabs(a - b) < 0.0001은 a와 b의 차이가 0.0001보다 작은지를 확인하여, 사실상 a와 b가 같은지를 확인하는 방법입니다. 이는 일반적인 부동소수점 비교에서 오차를 고려한 방법입니다.

#include<stdio.h>
#include<math.h>
int main(void)
{
	double a, b;
	a = (0.3 * 3) + 0.1;
	b = 1;
	printf("a==b의 결과 : %d\n", a == b);

	printf("fabs(a-b)<0.00001의결과 : %d\n", fabs(a-b) < 0.0001);


	return 0;
}

fabs는 math라이브러리에 있는 함수이므로 math.h를 참조해야합니다. #include<math.h>

마지막으로 논리연산자입니다.

논리 연산자는 주로 조건문과 반복문에서 사용됩니다.

논리 연산자 종류

  1. AND 연산자 (&&): 두 조건이 모두 참일 때 참을 반환합니다.
  2. OR 연산자 (||): 두 조건 중 하나라도 참일 때 참을 반환합니다.
  3. NOT 연산자 (!): 조건이 참이면 거짓을, 거짓이면 참을 반환합니다.

나중에 조건문과 반복문을 포스팅할때 더 쉽게 이해하실 수있을거에요.

#include <stdio.h>

int main(void) {
    int a = 5, b = 10, c = 0;

    // AND 연산자
    if (a < b && b > c) {
        printf("AND 연산자: 두 조건이 참입니다.\n");
    }

    // OR 연산자
    if (a < b || b < c) {
        printf("OR 연산자: 하나 이상의 조건이 참입니다.\n");
    }

    // NOT 연산자
    if (!(a > b)) {
        printf("NOT 연산자: 조건이 거짓입니다.\n");
    }

    return 0;
}

예제코드가 이해안가시면 그냥 넘기셔도 됩니다.

오늘은 여러 연산자들에대해 소개했는데 사실 연산자는 프로그래밍하면서 체화시켜야 하는 부분입니다.

대략적으로라도 이해하셨으면 성공입니다!

반응형