C 언어(8) - 연산자 이해하기3(형변환) + 주석

C언어 강의, 형변환 이해, 주석

Featured image

🔚 짧게 하는 복습

✅ 1. 관계, 논리, 조건연산자를 알자

✅ 2. 연산자 우선순위를 알자

혹시 기억이 안 난다면, 다시 돌아가자


오늘은 5번 강의에서 다뤘던 내용 중

“그런데 / 연산자는 변수의 자료형에 따라 결과가 다르다.

a/b라고 했을 때, a나 b 중에서 하나라도 실수 자료형을 가진다면 우리가 익히 아는 나눗셈이 되고, 둘 다 정수 자료형이라면 몫을 구하는 연산이 된다.

이는 자료형의 연산 방법에서 한계가 나타나는 것인데, 정수형 자료형들 간의 연산 결과는 오직 정수, 실수형 자료 간의 연산 결과는 실수가 나오기 때문이다.”

이 부분이 왜 이렇게 되는지, 저 자료형의 연산 방법에 대해 알아보자


같은 자료형 간의 연산

저번에 배운 것처럼, 정수형과 실수형은 자료를 저장하는 방법 자체가 다르다.

정수형, 실수형(까먹은 분들이나 처음 오신 분들을 위해)

그렇기에, 애초에 같은 자료형 간의 연산은 특이할 것 없는 이진수들의 계산이다..

정수 간의 계산은 정수의 결과, 실수 간의 계산은 실수의 결과를 가진다.

하지만 자료형이 달라진다면 어떤 일이 일어날까?

다른 자료형 간의 연산

우선 익숙한 이 그림을 다시 보자.

보다시피 정수형의 모든 숫자는 실수형으로 표현할 수 있다. 그렇기에 정수와 실수간의 연산은 정수를 실수로 바꾸는 과정을 거쳐서 실수와 실수간의 계산으로 바꾼다.

그렇기에 정수와 실수간의 계산은 모두 실수의 결과를 가지는 것이다.

또한, 그렇기에 같은 실수 사이에서도 float랑 double 간의 계산, 혹은 같은 정수 사이에서 short, long long 간의 계산 같은 것도 작은 자료형이 더 큰 자료형으로 바뀌어서 계산이 된다.

그런데 자료형은 어떻게 바뀌는 과정이 있다면, 우리가 직접 할 수도 있을까?

형 변환

자료형을 바꾸는 과정을 형 변환이라고 한다.

위와 같이 작은 자료형의 값을 큰 자료형의 값으로 연산할 때는 위 코드처럼 자동으로 형 변환이 된다.

그럼 반대로 해보자.

대부분 컴파일러는 경고를 낼 것이고, 문제가 생긴다. (d = 3.234인데 정수형 f의 값은 3으로 소수점 정보가 모두 날아가기 때문)

이런 경우는 직접 형 변환을 해줘야 하고 이를 명시적 형 변환이라고 한다.

컴퓨터에 우리가 실수로 더 작은 자료형에 대입하는 것이 아니라, 의도적으로 한다는 것을 알리는 것이다.

이는 변수 앞에 (바꾸고 싶은 자료형)을 붙여주면 된다.

이렇게 하면 더이상 경고가 나지 않고 원하는 대로 작동한다.

형 변환은 사실 의도적으로 사용할 일은 아직은 거의 없다. 하지만 더욱 효율적인 프로그래밍을 하기 위해서 알면 좋다.

특히 이런 경우에 많이 쓴다.

int a = 5;
int b = 3;

printf("sum : %d\n", a+b);
printf("diff : %d\n", a-b);
printf("multi : %d\n", a*b);
printf("div : %lf", 1.0*a/b);

위의 코드를 보면 정수 간의 계산이라서 덧셈, 뺄셈, 곱셈의 값은 어차피 정수이다. 문제 될 일이 없다.

그런데 만약 나눗셈할 때, a/b만 하면 몫만 나오고 소수점 아래는 나오지 않는다.

여기서 1.0을 앞에 곱해주면 연산에서 가장 큰 자료형이 실수가 되어서, 실숫값으로 자동으로 형 변환이 된다.

알면 쉽고 모르면 귀찮아지는 코드 중 하나이니 꼭 알아두자.


주석

또한, 우리는 명시적인 형 변환을 해줄 때는, 다른 사람이 코드의 의도를 이해할 수 있게 설명을 해주는 것이 좋다.

이럴 때 쓰는 방법이 주석이다. 주석은 코드에 영향을 주지 않고 설명을 할 때 쓰는 방법이다.

//이렇게 앞에 빗금 두 개를 적으면 코드에 아무 영향도 주지 않는다.

/*
또한, 이렇게 빗금과 별표를 이용하면
이렇게
엄청
엄청
매우
매우
긴
주석도 달 수 있다.
*/

실제로 코드에 영향을 안 주는지 주석을 적고 실행해보자.

영향을 주지 않고 코드를 짤 수 있다.

주석을 상세히 잘 적는 것도 프로그래머의 역량이다..

그 이유는 대형 프로젝트에서 총 코드의 수는 보통 100만 라인 이상이라고 한다.

그런 상황에서 주석도 없이 다른 사람의 코드를 읽는 것은 쉬운 일이 아니기 때문이다.

코드는 항상 쉽고 간결하게 적되, 주석을 꼭 잘 활용하자.


📖 오늘의 핵심(다 알기 전까지는 넘어가지 말자❗)

✅ 1. 형 변환, 명시적 형 변환을 알자

✅ 2. 주석을 알자

⚠️ 의도적으로 작은 자료로의 형 변환 시, 명시적 형 변환을 하자.

⚠️ 주석을 통해서 코드를 설명하는 방법을 적재적소에 이용하자

💣 과제, 없음