연산자라는 것은 계산을 할 때 가장 기본적으로 필요한 것이다.
+,-,*,/,모듈러 연산(%: 나머지)
연산자는 하나의 기호 체계다. 흔히 1+2에서 1과 2는 피연산자고 +는 연산자다.
프로그래밍에서 연산자라는 것은 없어서는 안 될 만큼 아주 중요하며 계산에 있어서 가장 기초적인 부분이다.
프로그래밍에서 가장 많이 사용되는 연산자는 +,-,*,/,%(모듈러).
추가적으로 ++와 !등과 같이 다양한 연산자가 사용되는 경우가 있기 때문에 이를 정확히 숙지하는 것이 중요함!!!
!라는 것은 not(아니다, 반대)라는 뜻이다.
++는 1을 더한다는 의미를 가지고 있따.
연산자는 익숙할 때까지 사용하는 것이 중요한데,
연산자를 사용해서 두 수를 적절히 처리할 수 있다.
1)초를 입력받아 몇 분 몇 초인지 계산하는 프로그램을 작성해보자.
2)++와 --연산의 개념을 바르게 이해하고 프로그램을 작성해보자.
3)+=, -=,+=,/=.%=의 사용법을 숙지하고 프로그램을 작성해보자.
4)==,>,<,&&,||,! 연산의 개념을 바르게 이해하고 프로그램을 작성해보자
5)'조건? 참 : 거짓'의 연산의 형태를 숙지하고 프로그램을 작성해보자.
6)pow()를 이용한 거듭제곱 연산 프로그램을 작성해보자.
#include<stdio.h>
#define SECOND_PER_MINUTE 60
int main(void)
{
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초입니다 라고 나옵니다.
이번에는 증감연산자를 해보겠습니다.
#include<stdio.h>
int main(void)
{
int x = 0;
printf("현재의 x는 %d입니다. \n", x);
x++;
printf("현재의 x는 %d입니다.\n", x);
printf("현재의 x는 %d입니다.\n", x--);
return 0;
}
위를 간단히 설명하자면, int x = 0이라고 했기 때문에 처음에 printf의 결과로 0이나오지만,
중간에 증감연산자로 x++; 가 있기 때문에 그 다음 printf값은 1이 되고,
세번째 printf("현재의 x는 %d입니다.\n", x--);의 의미는 현재는 x값이 1이지만, 값을 출력하고 나서 x가 0이 된다는 말입니다.
결과값으로는 x가 0이된 것을 알 수 없지만 0이 되었다는 말입니다.
#include<stdio.h>
int main(void)
{
int x = 0;
printf("현재의 x는 %d입니다. \n", x);
x++;
printf("현재의 x는 %d입니다.\n", x);
printf("현재의 x는 %d입니다.\n", x--);
printf("현재의 x는 %d입니다.\n, x); ->이때 x는 0이 됩니다.
printf("현재의 x는 %d입니다. \n,--x); -> 이때 x는 -1이 됩니다.
return 0;
}
이제는 복합대입연산자에 대해 알아보겠습니다.
#include<stdio.h>
int main(void)
{
int x = 100;
printf("현재 x의 값은 %d입니다.\n"',x);
x += 50; ->이 말은 x = x + 50 이라는 말입니다.
printf("현재 x의 값은 %d입니다.\n", x);
x -= 50; ->이 말은 x = x - 50 이라는 말입니다.
printf("현재 x의 값은 %d입니다.\n", x);
x *= 50; ->이 말은 x = x * 50이라는 말입니다.
printf("현재 x의 값은 %d입니다.\n", x);
x /= 50; ->이 말은 x = x / 50이라는 말입니다.
printf("현재 x의 값은 %d입니다.\n", x);
x %= 3; ->이 말은 x = x % 3이라는 말입니다.
printf(" 현재 x의 값은 %d입니다.\n", x);
return 0;
}
위의 결과값은 다음과 같이 나옵니다.
현재 x의 값은 100입니다.
현재 x의 값은 150입니다.
현재 x의 값은 100입니다.
현재 x의 값은 5000입니다.
현재 x의 값은 100입니다.
현재 x의 값은 1입니다.
그다음 할 것은 관계연산자 입니다.
#include <stdio.h>
int main(void)
{
int x = 50, y = 30;
printf("x가 y와 같은가 ? %d\n", x == y);
printf("x가 y와 다른가 ? %d\n", x != y);
printf("x가 y보다 큰가 ? %d\n", x > y);
printf("x가 y보다 작은가 ? %d\n", x <y);
printf("x에 y값을 넣으면 ? %d\n", x = y);
return 0;
}
위의 결과값은 아래와 같이 나온다.
x가 y와 같은가 ? 0
x가 y와 다른가 ? 1
x가 y보다 큰가 ? 1
x가 y보다 작은가 ? 0
x에 y값을 넣으면 ? 30 -> y값을 x에 넣기 때문에 30이 나온다.
실제로 위 연산자들은 제어문을 공부할 때 많이 사용이 되는데요, 아래와 같이 사용이 됩니다.
#include <stdio.h>
int main(void)
{
int x = 50, y = 30;
if(x == y) ->x와 y값이 같다면 위쪽이 실행되고, 같지 않다면 else부분이 실행이 된다.
{
~~
}
else
{ ->이 부분이 실행이 된다. x값(50)과 y값(30)은 다르기 때문에.
}
return 0;
}
다음으로 공부할 부분은 논리연산자입니다.
#include<stdio.h>
int main(void)
{
int x = 50, y = 30;
printf("x가 y보다 크고 y는 40미만입니까? %d\n", (x>y) && (y<40));
->x가 y보다 크면서 (동시에 = &&) y가 40보다 작은 경우에만 true값을 반환한다.
printf("x가 y보다 작거나 혹은 y가 30입니까? %d\n", (x < y) || (y == 30));
->x가 y보다 작거나 (or = ||) y가 30인 경우에만 true값을 반환한다.
즉, 둘 중 하나라도 해당이 된다면은 true값, 즉 참 값이 나온다.
printf("x가 50이 아닙니까? %d\n", x != 50);
->x가 50이 아니라면( x != 50) true값을 반환한다.
return 0;
}
아래와 같이 결과값이 나옵니다.
x가 y보다 크고 y는 40 미만입니까? 1
x가 y보다 작거나 혹은 y가 30입니까? 1
x가 50이 아닙니까? 0
다음은 조건연산자를 해보겠습니다.
특이한 연산자입니다. 가끔 나와서 집고 가야하는 연산자입니다.
#include<stdio.h>
int main(void)
{
int x = -50, y = 30;
int absoluteX = (x >0) ? x : -x ; -> absoluteX는 항상 절대값을 반환하게 하는 것을 말한다.
-> x>0 이 참일때는 x(왼쪽:참값)고 거짓일 때는 -x(오른쪽: 거짓값)가 출력된다
int max = (x > y) ? x : y;
int min = (x < y)? x : y;
printf("x의 절댓값은 %d입니다. \n", absoluteX);
printf("x와 y중에서 최댓값은 %d입니다.\n", max);
printf("x와 y중에서 최솟값은 %d입니다. \n", min);
return 0;
}
위의 결과값은
x의 절댓값은 50입니다.
x와 y중에서 최댓값은 30입니다.
x와 y중에서 최솟값은 -50입니다.
조건연산자를 많이 사용하는 이유는 코드를 굉장히 짧고 간결하게 만들어주기 때문입니다.
논리적으로도 부합하기도 하고요.
주로 두개의 숫자를 비교할 때 많이 사용이 됩니다.
마지막으로 해볼 연산자는 pow()라는 함수입니다.
pow는 power의 약자로써 거듭제곱 연산 프로그램을 지원해주는 함수입니다.
기존에 존재하는 라이브러리를 사용해서 쉽게 사용이 가능하고 거듭제곱같은 경우는 함수를 따로 만들어서 사용하는 경우가 많은데, pow함수를 사용하면 그렇게 하지 않아도 바로 사용할 수 있다.
연산자의 한 종류라고 할 수는 없지만, 자주 사용되는 연산 함수이기 때문에 실습을 해보겠습니다.
#include<stdio.h>
#include <math.h> -> math라는 라이브러리에는 다양한 함수가 있습니다.
예를들면, pow(), abs()
int main()
{
double x = pow(2.0, 20.0); ->왼쪽에 있는 좌항의 숫자에 우항의 숫자만큼 거듭제곱이 이루어진다는 뜻!
즉, 2의 20제곱
printf("2의 20제곱은 %.0f입니다.\n",x); ->소수점 이후로 0번째 숫자까지 출력이 되는 형태. 즉, 정수부만 출
return 0;
}
위의 결과값은 다음과 같이 나온다.
2의 20제곱은 1048576입니다.