Study: Software(SW)/SW: Language

[C++] μžλ£Œν˜• 데이터 νƒ€μž…(Data Type): κ³ μ • 길이 μ •μˆ˜, ν˜•λ³€ν™˜(Type Casting)

DrawingProcess 2022. 6. 13. 19:57
λ°˜μ‘ν˜•
πŸ’‘ λ³Έ λ¬Έμ„œλŠ” 'μžλ£Œν˜• λ°μ΄ν„° νƒ€μž…(Data Type): κ³ μ • κΈΈμ΄ μ •μˆ˜, ν˜•λ³€ν™˜(Type Casting)'에 λŒ€ν•΄ 정리해놓은 κΈ€μž…λ‹ˆλ‹€.
~~~μ •λ¦¬ν•˜μ˜€μœΌλ‹ˆ μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

1. μžλ£Œν˜• (Data Type)

데이터 ν˜•μ‹ (Data Type)

κΈ°λ³Έν˜• void
λ¬Έμžν˜• (signed) char 1 byte -128 ~ 127
unsigned char 1 byte 0 ~ 255
wchar_t 2 byte 0 ~ 65,535
μ •μˆ˜ν˜• bool 1 byte 0 ~ 1
(signed) short (int) 2 byte -32,768 ~ 32,767
unsigned short (int) 4 byte 0 ~ 65,535
(signed) int 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned int 4 byte 0 ~ 4,294,967,295
(signed) long (int) 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned long (int) 4 byte 0 ~ 4,294,967,295
__int8 1 byte -128 ~ 127
__int16 2 byte -32,768 ~ 32,767
__int32 4 byte -2,147,483,648 ~ 2,147,483,647
__int64 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
μ‹€μˆ˜ν˜• float 4 byte 3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits)
(long) double 8 byte 1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)

κ³ μ • 길이 μ •μˆ˜ ν˜•μ‹: #include <cstdint>

  • int8_t
  • int16_t
  • int32_t
  • int64_t
  • uint8_t
  • uint16_t
  • uint32_t
  • uint64_t

μ •μˆ˜ ν˜•μ‹ μ‚¬μš©μ‹œ 항상 κ³ μ • 길이 μ •μˆ˜ ν˜•μ‹μ„ μ‚¬μš©ν•˜κ³ , 크기λ₯Ό λͺ¨λ₯΄λŠ” 경우 64_tλ₯Ό μ‚¬μš©ν•˜μ„Έμš”.

ꡬ쑰체(struct)와 클래슀(class)

struct와 classλŠ” λ³€μˆ˜κ°€ 기본적으둜 μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•œμ§€ μ•„λ‹Œμ§€λ₯Ό μ œμ™Έν•˜λ©΄ 큰 μ°¨μ΄λŠ” μ—†μŠ΅λ‹ˆλ‹€.

κ΅¬κΈ€μ—μ„œλŠ” struct의 μš©λ‘€λ₯Ό class와 κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ structμ—λŠ” μ•„λ¬΄λŸ° ν•¨μˆ˜λ„ λ„£μ§€ μ•Šλ„λ‘ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
가급적 structλŠ” μžλ£Œλ“€μ„ (ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜μ§€ 말고) λ‹¨μˆœνžˆ λ¬ΆλŠ” ꡬ쑰체둜만 μ‚¬μš©ν•΄ μ£Όμ„Έμš”.

2. ν˜•λ³€ν™˜ (Type Casting)

문자 <-> 숫자

1) std::string -> 숫자 μžλ£Œν˜•: stoi, stol, stod, stof

std::string str_i = "22";
std::string str_li = "2144967290";
std::string str_f = "3.4";
std::string str_d = "2.11";
 
int i       = stoi(str_i);
long int li = stol(str_li);
float f     = stof(str_f);
double d    = stod(str_d);

2) char -> 숫자 μžλ£Œν˜•

int num = atoi("2019")​

3) std::string -> char * 

std::string str = "std::string to const char*";
const char *cc = str.c_str(); // const char* cc = &str[0];
char * c = const_cast<char *>(cc);

4) Byte String -> 숫자 μžλ£Œν˜•

int num = std::stoi(str, nullptr, 16);

μ°Έκ³ 

λ°˜μ‘ν˜•