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%2 | 1 |
+= | 덧셈 | a +=1 | 8 |
-= | 뺄셈 | a -=1 | 6 |
*= | 곱셈 | a *=2 | 14 |
/= | 나눗셈 | a /=2 | 3.5 |
++ | 1 더하기 | a = ++a | 8 |
– | 1 빼기 | a = --a | 6 |
간단한 사칙연산을 공부해봤다. 간단하지는 않았다. 이제 시작인데 왜이리 복잡한 것인가… 파이썬도 다시 공부해보고 있는데, 내 기준 MATLAB이 아직까지 가장 직관적인 언어같다. 끝!