본문 바로가기

C언어

c언어 5 (형변환 / 구조체)

실수 자료형 (float) : 소수점수 데이터를 저장할 수 있는 자료형

c언어에서는 실수 자료형에 대응하는 변수 타입이 있다.

이를 float 라고 하며

변수나 함수의 타입 앞쪽에 작성하여

실수형 변수나 함수를 만들 수 있다.

 

int 자료형 : 소수점수를 제외한 정수 형태의 데이터를 저장할 수 있는 저장공간

float 자료형 : printf 를 활용해 출력하기 위해서는 %f 라는 변환 문자를 활용

 

형변환 (Type-casting)

각각의 int, float 자료형을 다른 자료형으로 바꾸는 것

서로 다른 데이터 형태를 바꿔서 일치시켜주는 것

 

float와 int는 서로 다른 데이터 형태이며 이 자료형은 데이터 구조 또한 다른 형태를 갖고 있다.

램 메모리에 들어 있는 데이터 자체가 완전히 다르며,

이 데이터는 본래 서로 다른 데이터이기 때문에 덧셈 뺄셈 등의 연산을 할 수 없다.

하지만 이를 가능하게 해주는 것이 형변환

형변환을 통해 한쪽의 데이터를 다른 데이터와 동일하게 맞춰주고 그 뒤에 연산을 하는 것

 

변수 = (float)변수;

 

ex)

#include <cstdio>

 

int main(){

    int number1 = 10;

    int number2 = 4;

    float result = (float)number1 / number2;

    

    printf("%f", result);

    

    return 0;

}

 

암묵적 형변환 Implicit

프로그래머가 명시하지 않아도 

언어 자체에서 알아서 형변환을 자동으로 해주는 것

 

float 는 int 보다 더 큰 자료형이다.

따라서 int 자료형의 값이 float 라는 자료형에 들어갈 때에는 값의 소실이 '발생할 수' 도 있다.

발생할 수 있지만 발생하지 않을수도 있다. 강제로 형변환을 해야할 수 있음

 

명시적 형변환 Explicit

프로그래머가 명시하지 않으면 오류를 만들어 내는 것

언어 자체에서 기술적으로 불가능한 게 아니라 

경고의 의미를 내포하고 있음

 

구조체 (struct) : 변수의 집합이라고 말할 수 있는 형태

변수를 한데 묶어서 관리해줄 수 있는 일종의 변수의 집합

변수를 묶어놓고 하나의 집합을 만들고 이 집합을 하나의 변수타입처럼 사용해서

마치 이걸 또 다시 변수처럼 활용할 수 있게 만들어주는 것

 

구조체는 당연히 배열로도 사용 가능

 

이 구조체의 이름을 짓는 방법 또한 함수나 변수의 이름을 짓는 방법과 유사

c/ c++ 에서 어떤 이름을 지을 때에는 항상 같은 이름짓기 규칙이 사용됨

하지만 구조체의 이름은 대부분 '대문자'로 시작하는 영문자로 만드는 게 암묵적인 프로그래머들끼리의 룰

 

ex)

#include <cstdio>

 

struct Marine {

    int hp;

    int atk;

    int def; //int 변수명; 를 멤버 변수라고 한다.

};

 

int main() {

    Marine m; //이 Marine이라는 structure 변수는 한꺼번에 이 세개의 변수를 한꺼번에 갖고있다. 각각의 멤버변수에 접근 간으

    

    m.atk = 6;

    m.hp = 40;

    m.def = 0;

    

    Marine m2;

    m2.atk = 6;

    m2.hp = 40 - 5;

    m2.def = 1;

    

    return 0;

}