[C++] 자료형

chxxrin·2024년 7월 24일
0

C++

목록 보기
3/22
#include <iostream>

using namespace std;

int main()
{
    // 변수를 정의할 때 자료형을 미리 지정해야 합니다.
    // 자료형은 바꿀 수 없습니다.

    // 내부적으로 메모리를 이미 갖고 있습니다.
    int i;   // 변수 정의
    i = 123; // 변수에 값 지정 (객체 레퍼런스 아님)

    // sizeof 소개
    cout << i << " " << sizeof(i) << endl; // 추측해보세요.

    float f = 123.456f; // 마지막 f 주의
    double d = 123.456; // f 불필요

    cout << f << " " << sizeof(f) << endl; // 123.456 4
    cout << d << " " << sizeof(d) << endl; // 123.456 8

    // C++는 글자 하나와 문자열을 구분합니다.
    char c = 'a';

    cout << c << " " << sizeof(c) << endl; // a 1

    // 그 외에도 다양한 자료형이 존재합니다.

    // 형변환
    i = 987.654; // double을 int에 강제로 저장

    cout << "int from double " << i << endl; // 추측해보세요.

    f = 567.89; // 이것도 형변환

    // 기본 연산자

    // i = 987;
    i += 100; // i = i + 100;
    i++;      // i = i + 1;

    cout << i << endl; // 추측해보세요.

    // 불리언
    bool is_good = true;
    is_good = false;

    cout << is_good << endl; // 0

    cout << boolalpha << true << endl;   // true
    cout << is_good << endl;             // false
    cout << noboolalpha << true << endl; // 1

    // 논리 연산 몇 가지 소개 (참고 문서 사용)
    // https://en.cppreference.com/w/cpp/language/operator_precedence

    cout << boolalpha;
    cout << (true && true) << endl;  // 추측해보세요.
    cout << (true || false) << endl; // 추측해보세요.

    // 비교

    cout << (1 > 3) << endl;
    cout << (3 == 3) << endl;
    cout << (i >= 3) << endl;
    cout << ('a' != 'c') << endl;
    cout << ('a' != 'a') << endl;

    // 영역(scope)

    i = 123; // 더 넓은 영역

    {
        int i = 345;       // <- 더 좁은 영역의 다른 변수
        cout << i << endl; // 추측해보세요.
    }

    cout << i << endl; // 추측해보세요.

    return 0;
}

자료형

    // 변수를 정의할 때 자료형을 미리 지정해야 합니다.
    // 자료형은 바꿀 수 없습니다.

    // 내부적으로 메모리를 이미 갖고 있습니다.
    int i;   // 변수 정의
    i = 123; // 변수에 값 지정 (객체 레퍼런스 아님)

    // sizeof 소개
    cout << i << " " << sizeof(i) << endl; // 추측해보세요.
    // 123 4

    cout << sizeof(int) << endl;
    // 4

    cout << 123 + 4 << " " << sizeof(123+4) << endl;
    // 127 4

    float f = 123.456f; // 마지막 f 주의
    double d = 123.456; // f 불필요

    cout << f << " " << sizeof(f) << endl; // 123.456 4
    cout << d << " " << sizeof(d) << endl; // 123.456 8

    // C++는 글자 하나와 문자열을 구분합니다.
    char c = 'a';
    char str[] = "Hello, World!"; //std::string // 배열 생성

    cout << c << " " << sizeof(c) << endl; // a 1

    // 그 외에도 다양한 자료형이 존재합니다.
  • 파이썬과 달리 c++는 변수를 정의할 때 자료형을 미리 지정해야 하고, 지정한 자료형은 바꿀 수 없다. 이는 메모리를 미리미리 할당하기 때문이다.
  • 변수명은 메모리 공간의 주소값
  • c++는 변수 자체가 메모리가 정확히 어디에 있는지 주소를 알고 있기 때문에 값을 가져오는 시간이 파이썬에 비해서 빠르다
  • int형은 4byte 이므로 sizeof(int)는 4이다
  • char형은 1byte 이므로 sizeof(char)은 1이다
  • 리터럴(literal)은 적어놓은 그대로가 값을 의미한다. 예를 들면 'a', 1024, 3.14f ...
  • 변수(variable)은 변수 이름과 그 변수가 대표하는 메모리 공간에 저장된 값이 다르다. 예를 들면 위에서 변수 이름은 c이고 값은 'a'인 것처럼

형변환

    i = 987.654; // double을 int에 강제로 저장

    cout << "int from double " << i << endl; // 추측해보세요.
    // int from double 987 (강제 형변환을 하면 버림을 한다)

    f = 567.89; // 이것도 형변환
  • int -> float : .0 이 된다
  • float -> int : 소수점자리를 버린다
    ex) int i = 987.654 -> i는 987

기본연산자

    // i = 987;
    i += 100; // i = i + 100;
    i++;      // i = i + 1;

    cout << i << endl; // 추측해보세요.
    // 987 + 100 + 1 = 1088

bool

    bool is_good = true;
    is_good = false;

    cout << is_good << endl; // 0
    // is_good를 true에서 false로 변경했으므로 0 (false) 이 나옴

    // boolalpha를 지정하면 true는 true로, false는 false로 나옴
    // noboolalpha를 지정하면 true는 1로, false는 0으로 나옴
    cout << boolalpha << true << endl;   // true
    cout << is_good << endl;             // false
    cout << noboolalpha << true << endl; // 1
  • boolalpha를 지정하면 true는 true로, false는 false로 나옴
  • noboolalpha를 지정하면 true는 1로, false는 0으로 나옴

논리 연산자

    // https://en.cppreference.com/w/cpp/language/operator_precedence

    cout << boolalpha;
    cout << (true && true) << endl;  // 추측해보세요. true
    cout << (true || false) << endl; // 추측해보세요. true

비교 연산자

    cout << (1 > 3) << endl; // false
    cout << (3 == 3) << endl; // true
    cout << (i >= 3) << endl; // true
    cout << ('a' != 'c') << endl; // true
    cout << ('a' != 'a') << endl; // false

영역(scope)

    i = 123; // main함수 : 더 넓은 영역(전역변수)

	// 좁은영역
    {
        int i = 345;       // <- 더 좁은 영역의 다른 변수 (지역변수)
        cout << i << endl; // 추측해보세요. 
        // 345
    } // 여기서 이미 안쪽영역은 끝났으므로 이제 i에 345가 저장된것은 사용할수없음
    // 지금부터 i는 123이 저장되어 있음

    cout << i << endl; // 추측해보세요.
    // 123

0개의 댓글

관련 채용 정보