코딩 31일차 C/C++

마스터피스·2023년 11월 9일
0

C/ C++ 

목록 보기
4/35
post-thumbnail

형변환 / 구조체 - 구조적 프로그래밍을 위한 첫걸음

C언어에서 표현 법
정수(int) : %d
실수(float) : %f

1) 형변환을 배우기 위한 추가적인 자료형 float

  • 형변환을 배우기 위해서는 추가적인 자료형을 알아야 합니다. 이에 따라 float 라는 자료형에 대해 간단하게 알아봅니다. float 형은 int와는 다르게 소수점수 데이터를 저장할 수 있는 자료형입니다. int 자료형은 소수점수를 제외한 정수 형태의 데이터를 저장할 수 있는 저장공간이죠 float 자료형은 printf를 활용해 출력하기 위해서는 %f 라는 변환 문자를 활용해야 합니다

2) 형변환 (typecasting)

  • 이렇게 서로 다른 데이터 형태를 바꿔서 일치시켜주는 것을 형변환이라고 합니다. float와 int는 서로 다른 데이터 형태이며 이 자료형은 데이터 구조 또한 다른 형태를 갖고 있습니다. 램 메모리에 들어 있는 데이터 자체가 완전히 다르며, 이 데이터는 본래 서로 다른 데이터이기 때문에 덧셈 뺄셈 등의 연산을 할 수 없습니다.하지만 이를 가능하게 해주는 것이 형변환 입니다. 형변환을 통해 한쪽의 데이터를 다른 데이터와 동일하게 맞춰주고 그 뒤에 연산을 하는 것 이죠.

3) 형변환의 중요성

  • 형변환이 필요한 이유와 형변환을 하지 않았을 때의 예상되는 오류들을 미리 한번 확인해봅니다. C / C++ 은 implicit 하게 형변환이 되는 경우가 많습니다. 이는 암묵적으로 C / C++ 이 자동으로 형변환을 알아서 해준다는 말 입니다. 이는 편리한점도 있지만 오히려 프로그램의 동작이 이상하게 될 수 있다는 단점도 있습니다.

4)형변환을 하는 방법

  • 소괄호 기호 ( ) 를 이용해 변수 앞에 새로운 타입에 대한 구문을 입력해주면 형변환이 됩니다. C / C++는 자동으로 마음대로 형변환을 하기 때문에 C / C++이 자동으로 지정해주는 형변환 규칙 이외에 프로그래머가 직접 형변환을 지정해줘야 할 일이 많습니다

5)C / C++ 와 C# (혹은 Java) 의 자동 형변환

  • float 는 int 보다 더 큰 자료형 입니다. 따라서 int 자료형의 값이 float 라는 자료형에 들어갈 때에는 값의 소실이 '발생할 수' 도 있습니다. 발생할 수 있지만 발생하지 않을 수도 있습니다. 이 경우에 C / C++ 는 값의 소실이 되건 말건 그냥 알아서 변환을 해 주지만 Java / C# 등의 프로그래밍 언어는 값의 소실에 대한 책임을 프로그래머가 꼭 알고 있으라는 의미로 형변환을 강제로 하지 않으면 컴파일이 되지 않게 설계되어 있습니다.

괄호를 통해 형변환을 한다.

6) 암묵적 형변환

7) 구조체

  • 구조체란 변수를 한데 묶어서 관리해줄 수 있는 편리한 데이터 정의 방법 입니다. 한마디로 변수의 집합이라고 할 수 있습니다. 이 구조체의 이름은 프로그래머가 임의로 지정해줄 수 있으며 묶어서 관리할 데이터의 갯수나 종류 역시 프로그래머가 임의로 지정해줄 수 있습니다.
  • 더 알아보기

  • 이 구조체의 이름을 짓는 방법 또한 함수나 변수의 이름을 짓는 방법과 유사합니다. C / C++ 에서 어떤 이름을 지을 때에는 항상 같은 이름짓기 규칙이 사용됩니다. 하지만 구조체의 이름은 대부분 '대문자' 로 시작하는 영문자로 만드는 게 암묵적인 프로그래머들끼리의 룰입니다

헤더파일 / 소스파일

1) #include 구문에 대하여

  • #include 구문은 헤더파일에 존재하는 코드를 모두 복사 붙여넣기 하는 단순한 구문입니다

이는 매크로(전처리) 시간에 좀 더 자세히 배울 예정입니다

헤더파일은 소스파일에서 실행할 수 있는 일에 대한 초안 문서라는 개념으로 보면 이해가 쉽습니다

2) cstdio 헤더파일

  • cstdio 헤더파일은 표준 입/출력에 대한 함수들의 선언과 각종 변수, 상수를 알려주는 헤더파일입니다. 이 변수나 상수, 함수들은 헤더파일에 존재하는 것이 아닌 우리가 사용하는 컴퓨터 시스템 어딘가에 존재하고 있고, 우리는 그 존재하는 함수나 변수를 사용할 수 있게 헤더파일을 include 구문을 통해 가져오는 것이죠.

3) cmath 헤더파일

  • 지금부터는 아주 많이 활용되는 헤더파일에 대해 알아보겠습니다. cmath 헤더파일은 수학 관련 함수 / 상수 / 변수 등을 포함합니다

4) cstdlib 헤더파일

  • cstdlib 헤더파일은 메모리 관련, 랜덤 관련, 확장 기능 함수 / 상수 / 변수 등을 포함합니다.

5) ctime 헤더파일

  • 시간 관련 함수 / 상수 / 변수 등을 포함합니다.

6) 각종 헤더파일에서 사용할 수 있는 함수 예제

  • 헤더파일을 포함하게 되면 사용할 수 있는 함수들에 대한 예제코드를 살펴봅니다. 헤더파일에 포함된 함수들은 굉장히 많습니다. 헤더파일에서 사용할 수 있는 함수들에 대한 모든 정의는 다음의 웹에서 확인할 수 있습니다

https://www.cplusplus.com/reference/cstdio(영문)

https://www.cplusplus.com/reference/cstdlib(영문)

https://www.cplusplus.com/reference/cmath(영문)

https://www.cplusplus.com/reference/ctime(영문)

7) 사용자 정의 헤더 파일

  • 사용자 정의 헤더 파일을 생성하여 사용할 수 있고 이를 위해 헤더파일과 소스파일을 나누어 함수의 선언과 정의 부분을 나누어서 코드를 작성하는 방법을 살펴보게 됩니다. 이렇게 굳이 나누어서 만드는 이유는 프로그램이 커지게 되면 커지게 될수록 하나의 소스코드로 프로그램을 작성하기 어려워지기 때문입니다. 다른 프로그래머와 협업을 해야 하기도 하고, 하나의 소스코드가 필요 이상으로 길어지게 되면 읽는데도 좋지 않습니다. 지금은 여러 개의 헤더파일과 소스파일을 사용하지는 않지만 앞으로는 그렇게 만들게 될 것이고, 이를 위해 이번 시간에는 간단하게 헤더파일과 소스파일을 나누는 방법만 알아봅니다
profile
코딩 일지

0개의 댓글