본문 바로가기
카테고리 없음

[c언어] 배열을 정수로 변환하기

by Hyper하이퍼 2023. 1. 4.
반응형

Data를 다루려면 배열에 담아서 관리를 해야한다. 

 

배열에 값을 담으면 배열의 주소를 알게 되어 원하는 값에 쉽게 도달이 가능한 장점도 있다.

 

그리고 사실 c언어에서는 배열에 담지 않으면 어떤 Data든 다룰 수 없는 구조이다.

 

하지만 이렇게 배열에 담아서 관리를 하면 단점이 있는데 그 중 사람이 인식하는 방법과 다르다는 단점이 있다.

반응형

 

[크기가 9일 배열 ]

위와 같이 사람은 배열의 순서대로 값이 적혀있기 때문에, 저 숫자들을 그대로 읽어 하나의 정수로 인식하고 싶어한다.

 

하지만 배열은 각 방으로 나누어져 있기 때문에 컴퓨터는 배열의 값을 그대로 정수로 받아들이지 못한다.

 

그렇다면 어떻게 각 방에 나눠 담겨있는 값을 하나의 정수로 만들 수 있을까?

 

다음 방법은 알아 두면 정말 유용하게 사용 된다.

(이런 아이디어는 누가 내는지 참 신기할 따름이다.)

 

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

 

오늘은 배열의 값을 정수로 변환하는 방법에 대해서 알아보았다. 

포스팅을 하면서 어떻게 이런 방법을 생각해냈는지 또 다시 놀란다.

반응형