코딩 33일차 C/C++

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

C/ C++ 

목록 보기
6/35
post-thumbnail

각종 변수형 - 모든 코딩에서 찾아볼 수 있는 '기본 자료형'

1) bool (1byte)

  • 1byte(8bit)의 크기를 갖는 자료형입니다. 참 거짓을 판단하지만 C / C++ 에서는 참 거짓을 bool 이 아닌 다른 자료형으로도 판단할 수 있습니다. 여기에 나타나 있는 바이트의 크기는 꼭 알아두셔야 하므로 꼭 기억해주시기 바랍니다.

2) char (1byte)

  • 1byte(8bit)의 크기를 갖고 -128 ~ 127 까지의 숫자를 저장하는 자료형입니다. 대부분 문자 / 문자열을 저장하는 데 유용하게 사용되는 char 형태의 변수 또한 많이 사용되는 변수형이며 1byte 의 크기를 갖습니다.

3) int (4byte)

  • 4byte(32bit)의 크기를 갖고 -2,147,483,648 ~ 2,147,483,647 까지의 숫자를 저장하는 자료형입니다. 저장되는 자료형의 형태는 '정수형' 입니다.

4) float (4byte)

  • 4byte(32bit)의 크기를 갖고 소수점수 숫자를 저장하는 자료형입니다. 이 소수점수 형태의 자료형은 굉장히 큰 크기와 굉장히 작은 크기의 자료를 저장할 수 있으나. '근사치' 소수점수이기 때문에 정확도는 int 형보다 좋지 못합니다.

5) double (8byte)

  • 8byte(64bit)의 크기를 갖고 소수점수 숫자를 저장하는 자료형입니다. 이 소수점수 형태의 자료형은 굉장히 큰 크기와 굉장히 작은 크기의 자료를 저장할 수 있고, float 형보다 더 큰 크기를 갖고 있지만 역시 정밀도 문제 때문에 거의 대부분 근사치의 값을 갖게 됩니다.

6) 왜 이런 자료형들이 있는 건가

  • 우리 컴퓨터의 메모리의 저장용량에는 항상 한계가 있습니다. 우리가 휴대폰으로 어떤 게시글을 볼 때에도, 동영상을 시청할 때에도 사용할 데이터의 양을 걱정하면서 보듯이, 한정적인 리소스를 가장 효율적으로 활용해야 하는 것이 컴퓨터입니다. 이 컴퓨터는 자료를 효율적으로 저장하고 적재적소에 알맞은 연산리소스를 분배하기 위해 여러 가지 자료형을 갖고 있게 됩니다. 실제로는 지금 살펴본 자료형보다 더 많은 자료형이 있지만 입문 단계에서는 이 정도의 자료형만 알고 있어도 충분합니다.

연습문제)

sol)
헤더파일

#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>


//사용자로부터 실수를 입력받는 함수
float getFloat();

//사용자로부터 문자를 입력받는 함수
char getChar();

cpp 파일

#include "Header.h"


int main() {

    float value1;
    float value2;
    char oper;

    float result;
    bool valid = true;

    value1 = getFloat();
    value2 = getFloat();
    oper = getChar();

    switch (oper) {
    case '+':
        result = value1 + value2;
        break;
    case '-':
        result = value1 - value2;
        break;
    case '/':
        result = value1 / value2;
        break;
    case '*':
        result = value1 * value2;
        break;
    case '%':
        //형변환 int로
        result = (int)value1 % (int)value2;
        break;
    default:
        valid = false;
        break;
    }

    if (valid) {
        printf("결과는 %.3f 입니다.", result);
    }
    else {
        printf("올바르지 않은 연산자 입니다.");
    }


    return 0;
}

float getFloat() {
    float input;
    fseek(stdin, 0, SEEK_END);
    printf("실수를 입력해주세요:");
    scanf_s("%f", &input);
    return input;
}

char getChar() {
    int input;
    fseek(stdin, 0, SEEK_END);
    printf("연산자를 입력해주세요: ");
    scanf_s("%c", &input);
    return input;


}

<아스키코드>

아스키 코드와 같은 숫자를 입력하면 숫자로도 영문이나 문자가 될 수도있다.

%c 는 문자열 불러올때 사용
%d 는 정수형
%f 는 실수형

  • 여러 출력에서 여러가지 옵션을 넣을 수 있다.
  1. 정수형 %d
    %d 사이에 0과 숫자를 넣어주게 되면 앞이 0으로 된 숫자를 출력 할 수 있다.

  2. 실수형 %f
    %f 사이에 0과 숫자를 넣어주면 앞이 0으로 된 숫자를 출력 할 수 있다.
    또한, 소숫점과 숫자를 입력하면 소숫점 몇자리 수까지 나타낼건지 표현 가능하다.

연습문제)

sol)

해더

#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

float getFloat();

char getChar();

cpp

#include "Header.h"

int main() {

    float value1;
    float value2;
    char oper;


    float result;

    bool valid = true;
    bool exit = false;

    int w;

    value1 = getFloat();
    value2 = getFloat();
    oper = getChar();

    switch(oper){
    case '+':
        result = value1 + value2;
        break;
    case '-':
        result = value1 - value2;
        break;
    case '*':
        result = value1 * value2;
        break;
    case '/':
        result = value1 / value2;
        break;
    case '%':
        result = (int)value1 % (int)value2;
        break;
    case 'p':
        result = pow(value1,value2);
        break;
    case 'x':
        exit = true;
        break;
    case 'r':
        srand(time(0));
        w = rand() % 6;
        if (w == 0) {
            result = value1 + value2;
        }
        else if (w == 1) {
            result = value1 - value2;
        }
        else if (w == 2) {
            result = value1 * value2;
        }
        else if (w == 3) {
            result = value1 / value2;
        }
        else if (w == 4) {
            result = (int)value1 % (int)value2;
        }
        else if (w == 5) {
            result = pow(value1, value2);
        }
        break;

    default:
        valid = false;
        break;
    }

    if (valid == true) {
        printf("결과는 %.3f 입니다.", result);
    }
    else if (exit == true) {
        printf("프로그램을 종료합니다.");
    }
    else {
        printf("올바르지 않은 연산자 입니다.");
    }



    return 0;
}

float getFloat() {

    float input;
    fseek(stdin, 0, SEEK_END);
    printf("실수를 입력해주세요.: ");
    scanf_s("%f", &input);
    return input;
}

char getChar() {

    int input;
    fseek(stdin, 0, SEEK_END);
    printf("연산자를 입력해주세요.: ");
    scanf_s("%c", &input);

    return input;

}
profile
코딩 일지

0개의 댓글