C언어 ③

정혜지·2023년 4월 13일

연산자

산술연산자

연산자사용계산식결과
+가산i = 3 + 25
-감산i = 3 - 21
*곱셈i = 3 * 26
/나눗셈i = 3 / 21
%나머지i = 3 % 21


1. 나눗셈과 나머지

#include <stdio.h>
#define SECOND_PER_MINUTE 60

int main()
{
   int input = 1000;
   int minute = input / SECOND_PER_MINUTE;
   int second = input % SECOND_PER_MINUTE;
   printf("%d초는 %d분 %d초입니다.\n", input, minute, second);
   return 0;
}
// 실행결과: 1000초는 16분 40초입니다.

2. 증감 연산자

#include <stdio.h>

int main()
{
   int x = 0;
   printf("현재의 x는 %d입니다.\n", x);	// 현재의 x는 0입니다.
   x++;
   printf("현재의 x는 %d입니다.\n", x);	// 현재의 x는 1입니다.
   printf("현재의 x는 %d입니다.\n", x--);	// 현재의 x는 1입니다.
   printf("현재의 x는 %d입니다.\n", x);	// 현재의 x는 0입니다.
   return 0;
}

전치/후치 증감 연산자

  • 전치 : 변수 바로 앞에 연산자가 붙어있는 형태
    ++x --x
    먼저 증감이 수행된 후에 명령 실행

    int x = 0;
    printf("현재의 x는 %d입니다.\n", --x);
    👉🏻 실행결과 : 현재의 x는 -1입니다.

  • 후치 : 변수 바로 뒤에 연산자가 붙어있는 형태
    x++ x--
    먼저 명령이 실행된 후에 증감 수행

    int x = 0;
    printf("현재의 x는 %d입니다.\n", x--);
    👉🏻 실행결과 : 현재의 x는 0입니다.
    printf("현재의 x는 %d입니다.\n", x);
    👉🏻 실행결과 : 현재의 x는 -1입니다.



복합 대입 연산자

#include <stdio.h>

int main()
{
   int x = 100;
   printf("현재 x는 %d입니다.\n", x);		//현재의 x는 100입니다.
   
   x += 50;		// x = x + 50;
   printf("현재 x는 %d입니다.\n", x);		//현재 x는 150입니다.
   
   x -= 50;		// x = x - 50;
   printf("현재 x는 %d입니다.\n", x);		//현재의 x는 100입니다.
   
   x *= 50;		// x = x * 50;
   printf("현재 x는 %d입니다.\n", x);		//현재의 x는 5000입니다.
   
   x /= 50;		// x = x / 50;
   printf("현재 x는 %d입니다.\n", x);		//현재의 x는 100입니다.
   
   x %= 3;		// x = x % 3;
   printf("현재 x는 %d입니다.\n", x);		//현재의 x는 1입니다.
   return 0;
}

증감 연산자나 복합 대입 연산자는 코드의 길이를 줄이기에 용이하다~!



관계 연산자

#include <stdio.h>
int main()
{
   int x = 50, y = 30;
   printf("x와 y가 같은가? %d\n", x == y);	// 0 false
   // x와 y가 같은 값을 가지고 있는가?
   // x = y  -> x와 y가 같은 상황 그 자체를 의미
   // x == y -> true, x와 y가 같은 값을 가지고 있는 것
   
   printf("x와 y가 다른가? %d\n", x != y);	// 1 true
   printf("x가 y보다 큰가? %d\n", x > y);	// 1 true
   printf("x가 y보다 작은가? %d\n", x < y);	// 1 true
   printf("x에 y값을 넣으면? %d\n", x = y);	// 30
   // x = y -> x 변수에 y의 값을 대입한다.
   // 30(y값)이 x에 할당되고, 그 값이 %d에 출력이 됨
   // (x=y) 해당 수식을 해결한 뒤에 가장 왼쪽에 있는 변수가 %d로 출력된다.
   
   return 0;
}

연산자의미
>큰 값
>=크거나 같다(이상)
<작은 값
<=작거나 같다(이하)
==같은 값
!=다른 값


논리 연산자

#include <stdio.h>
int mian()
{
   int x = 50, y = 30;
   printf("x가 y보다 크고 y는 40미만입니까? %d\n", (x > y) && (y < 40));	// 1 true
   printf("x가 y보다 작거나 혹은 x가 30입니까? %d\n", (x < y) || (x = 30));	// 1 true
   printf("x가 50이 아닙니까? %d\n", x != 50);	// 0 false
   return 0;
}

연산자의미
&&모두 참인 경우에만 참
||둘 중 하나라도 참이면 참
!결과 반전


조건 연산자 (삼항 연산자)

#include <stdio.h>
int main()
{
   int x = -50, y = 30;
   
   int absoluteX = (x > 0) ? x : -x;
   // x가 0보다 크다면 x 자체를 반환
   // x가 0보다 작다면 -(-x)  --> +x
   // 즉, 항상 절댓값을 반환
   
   int max = (x > y) ? x : y;
   int min = (x < y) ? x : y;
   
   printf("x의 절댓값은 %d입니다.\n", absoluteX);	// 50
   printf("x와 y 중 최댓값은 %d입니다.\n", max);		// -30
   printf("x와 y 중 최솟값은 %d입니다.\n", min);		// -50
   
   return 0;
}

(Boolean expression) ? Ture part : False Part;



pow()

power의 약자로써 거듭 제곱의 연산을 지원해주는 함수
기존에 존재하는 라이브러리를 사용해서 쉽게 사용 가능
연산자의 종류는 아니지만 자주 사용되는 거듭 제곱 연산 함수이다.

#include <stdio.h>
#include <math.h>	// pow(), abs()

int main()
{
   double x = pow(2.0, 20.0);
   printf("2의 20제곱은 %.0f입니다.\n", x);
   return 0;
}

// 실행결과: 2의 20제곱은 1048576입니다.

pow(a, b)
좌항의 a가 우측의 b만큼 거듭제곱이 이루어진다.

%.0f -> 실수 서식 지정자
소수점 0번째 자리까지 출력 = 정수부분만 출력됨

profile
오히려 좋아

0개의 댓글