Post

C언어 산술 연산

#C #Arithmetic

C언어에서 산술연산을 공부해볼 차례이다.

1
2
3
4
5
6
7
8
9
#include  <stdio.h>
 int  main() {
	 int a =  1, b =  2;
	   a = a +  1;
	   printf("a : %d \n", a);
	   b +=  1;
	   printf("b : %d \n", b);
return 0;
}

다음과 같이 입력했을 때, a:2 b:3이라고 뜬다.

1. int

int a=1;에서 int는 정수형 인자를 나타내는 함수이다. 구글링을 해보니 2,147,483,648부터 2,147,483,647까지를 표현할 수 있다고 한다. 그럼 만약

1
2
3
4
5
6
7
8
#include  <stdio.h>
int  main() {
	int  a, b;
	a = 1;
	b = 2;
	printf("a / b 는 : %d  \n", a / b);
	return  0;
}

이렇게 돌리면 어떻게 될까? 0이 뜨게 된다. 정수형 인자와 정수형 인자를 계산했으므로 0.5에서 소숫점을 뗀 값을 보여주는 것이다. 이를 해결하기 위해서는 int 대신 실수형 인자인 double로 바꿔줘야 한다. 그럼 전부 double을 쓰면 되지 왜 int를 쓸까? 그 이유는 메모리와 관련이 있다.

int 타입은 2 혹은 4바이트를 잡아먹지만 double형은 8바이트를 잡아먹는다. 두 배나 차이가 난다는 뜻이다. 이런 몇 줄 안되는 상황에서는 사실 뭘 쓰나 크게 상관은 없지만, 내가 만드는 코드들은 대체로 몇백~ 몇천줄 짜리 코드이고 램도 많이 갉아먹기 때문에 용량 관리에 주의해야 한다. 따라서 정수가 확실하다면 int 를 써주면 되겠지만, 내 전공 특성상 일반적인 상황에서는 전부 실수를 쓰기 때문에 웬만하면 double을 쓰게될 것 같다.

2. 산술 연산자

사칙연산 기호는 우리가 아는 것과 전부 동일하게 쓸 수 있다. 다만 내가 평소에 쓰는 언어와 C, C++언어의 차이점이라면 +=와 같은 다소 난해한 연산자가 가능하다는 점이다. 맨 처음 예시에서 a = a + 1;처럼 우리가 아는 형식으로 작성도 가능하지만 b += 1;b = b + 1;과 같은 명령어라는 것이다. 되게 난해하다. 이런걸 많이 쓸 일이 있을까 싶지만, 아직 생기초 단계이기 때문에 의심은 접어두고 우선 받아들이기로 한다. -=, *=, /= 모두 가능하다. 더 나아가 ++--도 존재한다. c = ++a;와 같이 적으면 이건 c = a + 1;과 같은 말이다. 그렇다고 d = --a;는 당연히 d = a - 1;과 같은 연산이다.

a = 7;이라고 했을 때, 각 연산자에 대한 설명은 다음과 같다.

기호설명용례결과
+덧셈a= a+1;8
-뺄셈a= a-1;6
*곱셈a= a*2;14
/나눗셈a= a/2;3.5
%모듈(나머지)a = a%21
+=덧셈a +=18
-=뺄셈a -=16
*=곱셈a *=214
/=나눗셈a /=23.5
++1 더하기a = ++a8
1 빼기a = --a6

간단한 사칙연산을 공부해봤다. 간단하지는 않았다. 이제 시작인데 왜이리 복잡한 것인가… 파이썬도 다시 공부해보고 있는데, 내 기준 MATLAB이 아직까지 가장 직관적인 언어같다. 끝!

This post is licensed under CC BY 4.0 by the author.