My Profile Photo

DongChanS's blog


수학과 학생의 개발일지


파이썬 유저를 위한 C++ (2) - 변수, 연산자, 제어문

3) 변수 타입

3-1. 변수

  • 정의 : 이름을 할당받은 메모리 공간 -> 이 공간에 데이터를 저장
  • 종류 : 정수(char, int, long, long long), 실수(float, double, long double), 사용자 정의 구조체
  • bool 타입도 존재함!!

3-2. 변수가 저장하고 있는 것

  • 데이터가 저장된 메모리의 주소
  • 저장된 데이터의 길이
  • 데이터의 형태
  • 데이터

3-2. 변수 사용하기

  1. 변수 선언 : 메모리 공간 확보
  2. 변수 초기화 : 메모리 공간에 저장된 값(쓰레기값)을 초기화
int first = 15, second = 5; //선언과 초기화를 동시에 할 수 있음.

3-3. 상수

  • 값을 변경할 수 없는 변수

  • literal constant (ex, 345)

    • 정수형 상수를 8진수, 16진수로 출력하기 위해 cout객체의 oct,hex 사용가능
    std::cout << std::oct;
    std::cout << "숫자 10을 8진수로 표현하면 " << 10;
    // 숫자 10을 8진수로 표현하면 12
    
    • nullptr : 아무것도 가리키고 있지 않는 포인터를 나타내기 위한 키워드
    • 접미사를 추가하여 저장되는 타입을 명시가능
  • symblic constant (ex, const int ages = 30;)

    • 매크로 상수 (#define)보다 권장되는 문법

3-4. auto 키워드

#include <iostream>
#include <typeinfo>       // operator typeid

int main()
{
	auto real = 5.0;
	auto integer = 1 + 2;
	std::cout << typeid(real).name() // d (double)
	std::cout << typeid(integer).name() // i (integer)
}

auto 키워드를 통해서 타입을 자동으로 정해줌.

3-5. Type conversion

C++에서는 다른 타입끼리 연산을 할 때, 우선 피연산자들을 같은 타입으로 만들고 연산합니다.

위와 같이 자동으로 변환해주는 경우도 있고, 강제로 변환하는 방식도 존재합니다.

  • 자동 타입 변환

    ex) 덧셈연산 -> 변수 선언

    int res1 = 3.14; // 3.14(d) -> 3(d)
    int res2 = 5.6f + 3.14 
        // 5.6(d) + 3.14(d) = 8.74(d) -> 8(i)
    int res3 = 5.9f + 3.14 
        // 5.9(d) + 3.14(d) = 9.04(d) -> 9(i)
    

    데이터 손실을 최소화하는 방향으로 진행됩니다.

  • 강제 타입 변환

    1. (변환할타입) 변환할데이터
      • C언어와 C++ 둘 다 사용 가능함.
    2. 변환할타입 (변환할데이터)
      • C++에서만 사용 가능함.

4) 연산자

연산자마다 우선순위 표가 있긴 한데 외우기보다는 필요할 때마다 참조하는게 편합니다.

4-1. 기본적인 연산자

  • 산술 연산자 : +, -, *, /, % (파이썬과 동일)

  • 대입 연산자 : =, +=, -=, *=, /=, %= (파이썬과 동일)

    • !!주의!! num=+5라고 하면 5가 저장됨.
  • 증감 연산자 : ++x, x++, --x, x--

    • Zen of Python에 따르면, x++x+=1로 대체할 수 있기 때문에 파이썬에는 증감 연산자가 없다고 합니다..
  • 비교 연산자 : ==, !=, >, >=, <, <=

  • 논리 연산자 : &&, ||, !

    • 비교/논리 연산자의 결과값은 true, false가 아니라 0,1로 출력됨!
  • 비트 연산자 : &, |, ^, ~, <<, >>

  • 삼항 연산자 : 조건식 ? 반환값 1 : 반환값 2

    • 파이썬의 반환값 1 if 조건식 else 반환값 2와 동일합니다.
  • sizeof 연산자 : 변수의 저장공간 크기

    sizeof(long long); // 8
    sizeof(5); // int 상수값이니까 4
    

4-2. C++만의 연산자

http://tcpschool.com/cpp/cpp_operator_cpp

  1. 범위 지정 연산자(scope resolution operator)

    • :: 왼쪽에 있는 범위로 제한함.

    ex) header1 namespace로 제한하기.

    int x = 5;
    namespace header1 {
        int x = 4;
    }
    int main(){
        header1::x; // 4
    }
    
    • 클래스명::x => static 멤버 & namespace 멤버(파이썬에서는 __dict) 를 가져올 수 있습니다.
    • ::x : 전역변수
  2. 멤버 포인터 연산자

    • 클래스타입의객체.*멤버이름 : 멤버변수의 포인터 를가져옴.
    • 클래스타입객체의포인터->*멤버이름 : 이것도 똑같음.
  3. typeid 연산자

    • #include <typeinfo>

5) 조건문, 반복문, 제어문

5-1. 기본적인 조건문, 반복문, 제어문

  • if
  • if / else
  • if / else if / else
  • while
  • do / while
  • for
  • continue / break

5-2. 그 외

  • switch문 : else if문의 확장판

    상당히 최적화되어 있어서 if/else문을 쓰는거보다 효율적이라고 합니다.

switch (num)
{
    case 1:
        cout << "입력하신 수는 1입니다." << endl;
    case 2:
        cout << "입력하신 수는 2입니다." << endl;
    case 3:
        cout << "입력하신 수는 3입니다." << endl;
    default:
        cout << "1부터 5까지의 수만 입력해 주세요!" << endl;
}
  • for문의 변형문법 : 파이썬의 iterator와 비슷함.
int arr[5] = {1,2,3,4,5};
for (int el : arr){
    std::cout << el;
}
  • goto문 !!비추천!! : 지정한 label로 무조건 변경시키는 명령문
comments powered by Disqus