본문 바로가기
c언어

c언어의 수식과 c언어로 연산하기

by 개발자 L 2022. 11. 27.
반응형

c언어의 수식과 c언어로 연산하기

네 안녕하세요, 이번 포스팅에서는 c언어의 수식에는 어떤 것들이 있는지 알아보고, 그에 따른 연산을 어떻게 하는지에 대하여 알아보는 시간을 가져볼까 합니다.

어찌 됐건 c언어로는 무언가를 계산하기도 하죠?
그래서 어떤 형태의 연산을 할 지에 따라서 수식과 연산자들이 다 다릅니다.

그래서 그러한 것들이 무엇이 있으며, 어떻게 연산을 하는지에 대하여 살펴볼까 합니다.

그럼 지금부터 같이 알아볼까요? ㅎㅎㅎ

 

1. 변수에 값 저장하기

이전 포스팅에서는 변수를 선언하고 초기화 시키는 방법에 대하여 배웠습니다.

그래서 이번에는 변수에 값을 저장할 줄도 알아야 그 변수를 활용을 하겠죠?

보통 변수는 이런 식으로 저장을 합니다.

int num = 100;

여기에서 '=' 기호가 바로 값을 저장할 때 쓰는 수식어입니다.

그리고 주의사항은 변수는 시시각각 변하는 자료이기 때문에

변수를 선언하고 또 똑같은 이름의 자료로 변수를 선언하면  가장 마지막에 선언한 값으로 바로 바뀌기 때문에

절대 실수하시면 안 됩니다!!!

그리고 c언어 역시 컴퓨터에서 쓰는 언어이기 때문에 기본적으로 산술 연산자를 통하여 연산을 합니다.

하지만 컴퓨터에서 사용하는 연산자는 우리가 평소에 산수를 할 때 사용하는 연산자와는 약간 다릅니다.

그럼 어떤 식으로 다른 지 한 번 살펴볼까요?

연산 연산자 c언어 수식
덧셈 + x + y
뺄셈 - x - y
곱셈 * x * y
나눗셈 / x / y
나머지 % x % y

보통 이런 식으로 표현을 합니다.

그리고 이러한 연산자를 이항 연산자라도 부르는데, 그 이유는 피연산자(연산을 당하는 문자)가 2개이기 때문에 그렇게 부릅니다.

반응형

 

2. printf() : 출력 함수

c언어에서 우리가 어떤 값을 출력하려면 출력을 할 때 쓰는 함수가 필요하겠죠?

우리는 그럴 때 printf()라는 함수를 사용합니다.

printf() 함수는 거의 모든 걸 다 출력을 할 수 있기 때문에, 어떤 걸 출력하려고 한다 하면 거의 무조건 이 함수를 씁니다.

이 함수를 사용하는 방법은 보시면 괄호가 있죠?
그래서 괄호 안에다가 우리가 출력하고자 하는 것을 입력하면 됩니다.

그리고 우리가 받을 자료의 형태에 따라 형식 지정자라는 것을 써줘야 합니다.

형식 지정자는 출력 형식을 지정하는 건데, 우리가 정수형 변수를 출력을 하겠다 하면

정수형 변수를 받는 형식 지정자를 호출을 해서 받아줘야 한다는 뜻입니다 ㅎㅎㅎ

그래서 형식 지정자가 있는 자리에 그 결괏값이 출력이 된다고 생각하시면 됩니다.

그러면 어떤 식으로 출력이 이루어지는지 간단한 예문을 통해 알아볼까요?

#include <stdio.h>

int main()
  
{
  int x; // 변수 선언
  int y; // 변수 선언
  int sum, diff, mul, div // 두 정수간 연산 결과를 저장하는 변수
    
  x = 20; // x값 초기화
  y = 10; // y값 
  
  sum = x + y; // 덧셈 연산
  diff = x - y; // 뺄셈 연산
  mul = x * y; // 곱셈 연산
  div = x / y; // 나눗셈 연산
  
  printf("두 수의 합 = %d\n" sum); // 두 수의 합 출력, %d 자리에 수가 나옴, \n = 개행(엔터키와 동일한 기능을 함)
  printf("두 수의 합 = %d\n" sum); // 두 수의 차 출력
  printf("두 수의 합 = %d\n" sum); // 두 수의 곱 출력
  printf("두 수의 합 = %d" sum); // 두 수의 나눈 몫 출력
  
  return 0; // 정수로 반환
}

이런 식으로 쓸 수 있습니다.

그리고 printf() 함수 안에 \n을 쓴 것이 보일 건데, 이건 개행을 한다는 의미입니다.

c언어와 다른 프로그래밍 언어들에서는 엔터를 쳐도 줄이 내려가지 않기 때문에

이런 식으로 반드시 개행을 해주는 명령어를 입력해줘야 합니다.

그렇지 않으면 가로로 계속 이어서 쳐지기 때문에 결과를 알아보기 힘듭니다.

그리고 빈칸을 띄우는 방법도 존재하는데, 그건 바로 \t를 \n 자리에 입력을 하는 것입니다.

그렇게 하면 우리가 탭키를 쓴 것처럼 띄어집니다.

그래서 가로로 출력을 해야 하는 상황이 있을 때는 값이 붙지 않도록 \t를 입력해주시면 됩니다.

 

3. scanf() 함수

scanf()는 특정한 자료의 주소 값을 불러주는 함수입니다.

예를 들어 우리가 정수형 자료를 입력을 하고자 할 때, 그 자료의 주소 값을 가져와서 어떤 형식인지 지정을 해줍니다.

이렇게 하게 되면 우리가 초기값을 굳이 선언을 하지 않더라도 실행 창에 자료를 직접 입력해서 연산을 할 수 있습니다.

보통 이런 식으로 씁니다.

int a;
printf("정수를 입력하세요");
scanf("%d", &a); // & : 주소를 나타낼 때 사용

이렇게 쓰는데, 여기에서도 printf() 함수처럼 우리가 받을 자료의 형식을 지정해주는 형식 지정자를 씁니다.

그리고 추가되는 것은 우리가 여기에서 자료의 주소를 받을 것이기 때문에 특수한 기호가 하나 더 들어가는데,

&(앰퍼샌드)를 씁니다.

&는 우리가 어떤 자료의 주소를 불러오겠다는 뜻입니다.

scanf()는 자료의 주소 값을 불러와서 연산을 하는 것이기 때문에 꼭 &를 붙여줘야 합니다.

그리고 각각의 형식 지정자는 이러합니다.

형식 지정자 의미 예시
%d 정수를 받는 형식 지정자 scanf("%d", &a);
%f 실수를 받는 형식 지정자 scanf("%f", &a);
%lf double형의 실수를 받는 형식 지정자 scanf("%lf", &a);
%c 문자형을 받는 형식 지정자 scanf("%c", &ch);
%s 문자열을 받는 형식 지정자 scanf("%s", s);
gets(str);, gets_s(str, 문자열의 크기);
gets_s(str, sizeof(문자열 변수));

여기에서 특수한 것이 하나 있죠?

바로 문자열을 받는 것인데요,

문자열은 그 자체로 주소가 된다는 특징이 있기 때문에 &를 붙이지 않아도 무방합니다.

그리고 scanf()는 공백을 인식하지 못하기 때문에 gets() 또는 gets_s()라는 함수를 사용하여 공백까지 다 받습니다.

또한 scanf() 역시 scanf_s()가 존재하는데, 그 이유는 요즘에 오버플로우 공격이라는 해킹 수법이 있는데,

그 방법으로 메모리 공간을 망가뜨려서 프로그램을 망치기 때문에 _s를 붙여서 보안을 강화시킨 거라고 합니다.

그래서 요즘은 _s를 붙여서 쓰는 것이 대세라고 하는데, 그게 싫으시다면 C언어와 C++에서 하는 sdl 검사라고 하는 것을 해제시키면 됩니다.

그러면 실행 오류가 나지 않고 프로그램이 잘 돌아갑니다.

 

여기까지 c언어의 수식과 연산 방법에 대하여 알아보았는데요,

다음 포스팅에서는 이들을 가지고 간단한 문제들을 풀어보며 c언어 기본기를 다져보는 시간을 가져보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사합니다 ~

반응형

댓글