Data를 다루려면 배열에 담아서 관리를 해야한다.
배열에 값을 담으면 배열의 주소를 알게 되어 원하는 값에 쉽게 도달이 가능한 장점도 있다.
그리고 사실 c언어에서는 배열에 담지 않으면 어떤 Data든 다룰 수 없는 구조이다.
하지만 이렇게 배열에 담아서 관리를 하면 단점이 있는데 그 중 사람이 인식하는 방법과 다르다는 단점이 있다.
위와 같이 사람은 배열의 순서대로 값이 적혀있기 때문에, 저 숫자들을 그대로 읽어 하나의 정수로 인식하고 싶어한다.
하지만 배열은 각 방으로 나누어져 있기 때문에 컴퓨터는 배열의 값을 그대로 정수로 받아들이지 못한다.
그렇다면 어떻게 각 방에 나눠 담겨있는 값을 하나의 정수로 만들 수 있을까?
다음 방법은 알아 두면 정말 유용하게 사용 된다.
(이런 아이디어는 누가 내는지 참 신기할 따름이다.)
sum 이라는 int형 변수에 배열의 값을 꺼내서 더하는데, 그 다음 반복할 때는 앞에서 구한 sum에 10을 곱해서 배열의 다음 값과 더해서 다시 sum을 만들어 준다.
설명이 복잡하니 바로 코드를 보자.
#include <stdio.h>
int main(void)
{
int sum = 0;
int i;
int A[10 + 1] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (i = 0; i < 9; i++)
{
sum = sum * 10 + A[i];
printf("%d번째 sum: %d\n", i, sum);
}
printf("%d", sum);
}
출력 결과를 보면 첫 번째는 배열의 처음 값이 출력 되었음을 알수 있다.
두 번째는 배열의 첫 번째값에 10을 곱한 값과 두 번째 배열의 값이 더해져 12가 출력된 것을 확인할 수 있다.
수식으로 표현하면 다음과 같다.
sum : (1 * 10 ) + 2 --> sum == 12
sum : (12 * 10) + 3 --> sum == 123
sum: (123 * 10) + 4 --> sum == 1234
오늘은 배열의 값을 정수로 변환하는 방법에 대해서 알아보았다.
포스팅을 하면서 어떻게 이런 방법을 생각해냈는지 또 다시 놀란다.