본문 바로가기

C++ 공부

C++공부 2일차(헤더, 리소스, 소스, 변수, 연산자, 계산기 만들기)

헤더 파일

.h 파일 클래스 정의 부분

헤더 파일에는 라이브러리, 사용자정의 두가지가 있는데 라이브러리는 가져다 쓰면 되고 사용자 정의는 사용자가 직접 구현한 헤더 파일에 넣어서 사용 가능하다.
iostream이 c++에서 제공하는 라이브러리에 해당한다. c++에서 출력, 입력같은 기능을 미리 만들어둔것을 가져다 쓰는것.
다른 파일에서 헤더 파일을 불러오려면 #include를 이용하는데 c++에서 제공하는 라이브러리는 #include <헤더파일이름>으로, 사용자 정의는 #include "헤더파일이름"으로 참조한다.

리소스 파일

외부 자원을 가져와서 사용할 수 있음.

내 컴퓨터에 있는 A.txt 파일을 읽고 싶을 때 리소스 파일에 A.txt 파일을 자원으로 등록하는것.

소스 파일

.cpp, .c파일 main함수가 포함 된 실제 코드 구현 부분

프로그램이 시작되면 제일 먼저 main 함수를 찾고 실행한다.

cout은 console output의 약자이고 기능은 문자를 출력한다.

endl는 end line의 약자이고 기능은 개행문자(줄바꿈, 엔터)이다.

전에는 std::cout, std::endl로 작성했지만 위에 using namespace std;를 작성을 해서 std 생략 가능한것.

변수, 연산자

변수는 타입과 이름을 갖는다.

정수형 데이터는 int, 문자형 데이터는 char와 같이 타입이 존재하고 메모리를 대표할 이름도 갖는다.

변수의 타입에 따라 차지하는 메모리의 크기가 다릅니다.

메모리는 유한한 자원입니다. 따라서 각 타입에 맞는 크기가 정해져 있습니다.

C++에서 자주 사용하는 변수의 타입과 크기를 그림으로 나타내면 아래와 같다.

integer(int)는 정수(음수, 0, 양수). unsigned int0, 양수만 표현한다. int에서 음수가 없어지고 양수의 범위 2배이다.

int의 범위는 약 -20억 ~ 20억, unsigned int의 범위는 0 ~ 40억

float과 double은 부동소수, float는 소수점 7~8자리까지 double은 15자리까지 표시하여 더 정밀한 소수를 표현 가능하다.

bool은 참과 거짓

char은 문자 하나(a, b, c, d, e)

string은 문자들의 집합, 문자열("Hello World!") c++에서 제공하는 <string>이라는 헤더를 추가해야한다.

 

변수는 초기 선언과 동시에 값을 가질 수 있으며, 추후에 대입 연산자를 통해 값을 가질 수 있다.

변수로 할당한 공간에 입력을 받을 때에는 'cin'을 사용하고 변수에 저장된 값을 콘솔에 출력할 때에는 'cout'을 사용한다.

변수의 크기sizeof 연산자를 활용해서 구할 수 있다.

예를 들어, int a 같이 변수를 선언한 경우 sizeof(a) 하면 해당 변수의 크기를 구할 수 있다.

변수는 기본적인 대입(=), 사칙연산(+, -, *, /) 그리고 대소비교( >, <, >=, <=, !=, == )가 가능하다.

대입은 = 이고, 비교는 == 이다.

전위연산과 후위연산

int b = a++는 a값을 b에 대입후 a값을 증가 => 후위연산

int b = ++aa값을 증가시키고 해당 값을 b에 대입 => 전위연산

 

예시 1. 변수의 선언

#include <iostream>
#include <string> //string 헤더를 추가
using namespace std;

int main() {
    // 정수형 변수 선언
    int age = 25;  // 초기값 25

    // 실수형 변수 선언
    float pi = 3.14f;
    double largeDecimal = 12345.6789;

    // 문자형 변수 선언
    char grade = 'A';

    // 문자열 변수 (C++ 표준 라이브러리 사용)
    string name = "John";

    // 불리언 변수
    bool isStudent = true;
    
    cout << "Age: " << age << endl;
    cout << "Pi: " << pi << endl;
    cout << "Large Decimal: " << largeDecimal << endl;
    cout << "Grade: " << grade << endl;
    cout << "Name: " << name << endl;
    cout << "Is Student: " << (isStudent ? "true" : "false") << endl;

    // 상수 선언
    const double gravity = 9.8;  // 중력 가속도
    cout << "Gravity: " << gravity << endl;

    return 0;
}

(isStudent ? "true" : "false")는 삼항연산자 이다.

( 조건 ? true : false)로 구성되어 있고 조건의 결과 값이 참이면 true실행, 거짓이면 false가 실행된다.

const는 상수를 선언하는 것이다. 상수란 한 번 값을 선언한 후 변할 수 없는 값이다.

 

예시 1. 결과

double 변수는 기본적으로 소수점 1자리 까지만 출력하지만 몇 자리까지 출력할 지 설정 가능하다.

 

예시 2. 변수의 입력

#include <iostream>
#include <string>
using namespace std;

int main() {
    // 변수 선언
    string name;
    int age;
    float height;

    // 문자열 입력
    cout << "이름을 입력하세요: ";
    getline(cin, name);

    // 정수 입력
    cout << "나이를 입력하세요: ";
    cin >> age;

    // 실수 입력
    cout << "키를 입력하세요 (cm): ";
    cin >> height;

    // 출력으로 확인
    cout << "\n입력한 정보:" << endl;
    cout << "이름: " << name << endl;
    cout << "나이: " << age << endl;
    cout << "키: " << height << " cm" << endl;

    return 0;
}

 

cin >> name이 아닌 getline(cin, name)으로 사용한 이유는 cin >> name은 입력 받은 값에 공백이 있으면 제대로 출력되지 않음.

 

예시 2. 결과

예시 2. getline(cin, name)대신 cin >> name 사용했을 경우

 

예시 3. 전위 증가 연산과 후위 증가 연산

// 전위 증가 연산 (++a) vs 후위 증가 연산 (a++) 기본 예제
#include <iostream>

using namespace std;

int main() {
    int a = 5;
    int b = a++;  // 후위 증가: b에 먼저 a를 대입한 후 a 증가 / a = 6, b = 5
    int c = ++a;  // 전위 증가: a를 먼저 증가시킨 후 c에 대입 / a = 7, c = 7

    cout << "후위 증가 (b = a++):" << endl;
    cout << "b = " << b << ", a = " << a << endl; // b = 5, a = 7

    cout << "전위 증가 (c = ++a):" << endl;
    cout << "c = " << c << ", a = " << a << endl; // c = 7, a = 7

    return 0;
}

 

예시 3. 결과

 

계산기 만들기

1. 입력받은 숫자를 저장할 수 있는 공간이 필요하다.

예를 들어, 2 + 3의 경우 피연산자인 2와 3을 어딘가에 저장해놓고 연산을 수행해야 합니다. => 변수 선언

2. 입력받은 2개의 숫자를 더해야 한다.

예를 들어, 2 + 3의 경우 2와 3을 더하는 연산을 수행할 수 있어야 합니다. => 두 숫자의 합 a + b

3. 연산을 한 뒤 결과값을 출력할 수 있어야 한다.

예를 들어, 2 + 3의 경우 연산 후 최종 결괏값 5를 콘솔에 출력할 수 있어야 합니다. => cout으로 출력

결과