그냥 게임개발자

타입? 타입변환? 본문

C++ 나만의 복습

타입? 타입변환?

sudoju 2024. 3. 31. 18:47

C++은 매우 엄격하다

그러기에 매번 타입(type)을 설정해주어야 한다.

또한 매개변수의 수나 타입 등에 따라 함수를 다르게 인식한다 (overloading)

 

예를들어 function(int a, int b)와 function(int a)는 이름만 같지 다른 함수로 인식된다.

 

타입

여러가지가 있지만 자주 사용하는 것들만 써보겠다.

void, char, string, bool, int, long long, double, unsigned long long

 

차근차근해보자.

 

void : 반환 값 없음

 

#include <stdio.h>

using namespace std;

int value = 1;

void a()
{
    value = 2;
    cout << value << "\n";
    return;
}

int main()
{
    a();
    return 0;
}

a라는 함수가 value를 바꾸고 아무것도 반환하지 않음

이렇게 아무것도 반환하지 않는 함수는 void로 선언

 

그렇다면 반환 값이 있으면 그 반환값에 맞는 타입을 써주면 된다.

#include <stdio.h>

using namespace std;

double a()
{
    return 3.141592;
}

int main()
{
    double value = a();
    cout << value << "\n";
    return value;
}

 

이렇게 보았듯이 double이라는 타입의 값을 반환 시키려면 void에 써줬던 부분을 double로 쓰면 된다.

ㅇㅇ

 

char

 

#include <stdio.h>

using namespace std;

char b()
{
    char a = 'a';
    return a;
}

int main()
{
    char a = b();
    cout << a << "\n";
    return 0;
}

 

위랑 똑같다.

 

char을 초기화할 때 주의점

char에 아무런 값을 할당하지 않으면 널문자 즉 (NULL, '\0', 0)으로 초기화 가 된다.

이는 빈 문자열이 아니며!!!! NULL문자는 문자열의 끝을 나타내는 것으로 사용이 된다.

 

char 변수를 초기화할 때 일반적으로 두 가지 방법이 있다.

  1. 값으로 초기화 : 변수를 특정 값으로 초기화 할 수 있다.
    예를 들어 char ch = 'a'; 또는 char ch = 0;과 같이 말이다.
  2. 널 문자('\0' or NULL)로 초기화 : char 변수를 널 문자로 초기화하는 것은 문자열을 다룰 때 특히 중요하다.
    널 문자는 문자열의 끝을 나타내는데 사용이 되기 때문이다 char ch = '\0';
#include <stdio.h>

using namespace std;

int main()
{
    char a ='\0';
    char b = 0;
    char c = NULL;
    string d = "";
    cout << "hello";
    if (a == b) cout << 1;
    if (b == c) cout << 1;
    
    // 빈 문자열이 아님
    if (string(1, a) == d) cout << 1;
    
    return 0;
}
/*
결과물
hello11
*/

진짜다

 

string

char를 아래의 코드처럼 char[] 배열로 선언하거나 그냥 string으로 선언해 여러개의 문자 모음이자 문자 배열인 문자열을 선언할 수 있다.

char s[10];
string str;

 

string은 char[]와 기능은 똑같다고 보면 된다.

#include <stdio.h>

using namespace std;

int main()
{
    string a = "산토스";
    cout << a[0] << '\n';
    cout << a[0] << a[1] << a[2] << '\n';
    cout << a << '\n';
    
    string b = "abc";
    cout << b[0] << '\n';
    cout << b << '\n';
    
    return 0;
}

 

결과물은 내가 직접 테스트해보았다.

 

분명 첫번째 cout은 a[0]을 출력했는데 아무것도 없는 빈 공백이 나오는 것을 확인할 수 가 있다.

이렇게 되는 이유는 a[0]을 출력할 때 0번째의 1byte를 출력한다는 것을 의미한다.

아시겠지만 영어는 한 글자당 1byte 한글은 한 글자당 3byte이다.

하지만 abc는 잘 나오는 것을 확인할 수 가 있다.

 

이렇게 출력이 된다는 것이다.

 

 

다음에는 string에 관련된 메서드를 복습하자~

 

이제 진짜 다시는 복습할 일이 없게 잘 쓰자....

 

'C++ 나만의 복습' 카테고리의 다른 글

ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);  (0) 2024.03.31
string의 메서드  (0) 2024.03.31
출력  (0) 2024.03.31
입력  (0) 2024.03.31
STL이란?  (1) 2024.03.31