๐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด - Primitive Data Type
๐ซ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ - Primitive Data Type
@ U ๊ธฐ๋ง๊ณ ์ฌ ์ถ์ : ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
- ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋, ๋ํ ๋ค๋ฅธ ํ์ ์ผ๋ก ์ ์๋์ง ์๋ ํ์ ์ ๋งํ๋ค.
๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ํ์ (๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด ๋ฑ)์ ์ ๊ณตํ๊ธฐ ์ํด ํ์ฉ๋๋ค.
- ํ๋์จ์ด ๋ฐ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ : ์ ์(int), ์ค์(float)
- ์ฝ๊ฐ์ ๋นํ๋์จ์ด์ ์ง์์ ๋ฐ๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๋ ์์ ์ ์์
๐ซ ์์น ํ์
- ์ด๊ธฐ๋ถํฐ ์ค๋๋ ๊น์ง ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์์น ํ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๊ณ ์๋ค.
๐ซง ์ ์
- ํ๋์ ์ปดํจํฐ๋ ๋ค์ํ ํฌ๊ธฐ์ ์ ์ ํ์
์ ์ง์ํ๊ณ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ํ ์ด๋ฅผ ๋ฐ์ํ์ฌ ์ง์
- Java ๋ถํธํ ์ ์ : byte, short, int, long
- C/C++ ๋ถํธํ/๋น๋ถํธํ ์ ์ : int, unsigned int, short, unsigned short, โฆ
- Python : ๊ธธ์ด์ ์ ์ฝ์ด ์๋ ์ ์ ํ์
- ํ๋์จ์ด์ ์ํด ์ง์ ์ง์๋์ง ์๋ ์ ์ ํ์ (๋นํ๋์จ์ด์ ์ง์์ ๋ฐ๋ ์ ์ ํ์ )
- ์์ ์ ์ ํํ
- ๋ถํธ-ํฌ๊ธฐ ํ๊ธฐ๋ฒ
- ๋ถํธ ๋นํธ๊ฐ 0์ด๋ฉด ์์, 1์ด๋ฉด ์์
- ํฌ๊ธฐ๋ ์ ๋๊ฐ์ ํํ
- ๋ฌธ์ ์ : ์ฐ์ ์ฐ์ฐ์ ์ํ ์ปดํจํฐ ํ๋์จ์ด ์ ์์ด ๋งค์ฐ ์ด๋ ต๋ค
- 2์ ๋ณด์ ํ๊ธฐ๋ฒ
- ์์๋ฅผ ํํํ๋๋ฐ 2์ ๋ณด์ ํ๊ธฐ๋ฒ ์ฌ์ฉ
- ์ฐ์ ์ฐ์ฐ์ ์ํ ์ปดํจํฐ ํ๋์จ์ด ์ ์์ด ์์ฃผ ์ฝ๋ค
- 1์ ๋ณด์๋ฅผ ๋ง๋ ํ 1์ ๋ํด์ค์ 2์ ๋ณด์๋ฅผ ์ฝ๊ฒ ์์ฑ ๊ฐ๋ฅ
- ๋ถํธ-ํฌ๊ธฐ ํ๊ธฐ๋ฒ
๐ซง ๋ถ๋ ์์์
- ์ค์ ๊ฐ, ํ์ง๋ง ๋๋ถ๋ถ ์ค์ ๊ฐ์ ๋ํ ๊ทผ์ฌ๊ฐ
- ์ฐ์ ์ฐ์ฐ ์์ ์ ํ๋๋ฅผ ์์คํ๋ค๋ ๋ฌธ์ ์
- ๊ณผ๊ฑฐ์๋ ์ปดํจํฐ๋ง๋ค ๋ถ๋ ์์์ ์ ํํํ๋ ๋ฐฉ์์ด ๋ฌ๋์ผ๋, IEEE์์ ๋ถ๋ ์์์ ํํ์ ํ์คํ ํจ -> IEEE 754
- ๋จ์ ๋(Single precision) -> float, ๋ฐฐ์ ๋(Double precision) -> double
@ PIC 0001, 0002
๐ซง ๊ณ ์ ์์์ , ์ญ์ง์
@ PIC 0003
์ญ์ง์ ๋ฐ์ดํฐ ํ์ ์ ๊ณ ์ ๋ ์์ ์ญ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์์์ ์ ๊ณ ์ ๋ ์์น๋ฅผ ๊ฐ์ง
- ์ ํ๋ ๋ฒ์์ ํฌํจ๋ ์ญ์ง์ ๊ฐ๋ค์ ์ ํํ๊ฒ ์ ์ฅ ํ ์ ์์
- ์ฌ๋ฌด์ฉ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ํ์
- ์ปดํจํฐ์ ์ญ์ง์ ํํ(BCD: Binary Coded Decimal) ์ง์ ์ฌ๋ถ
- ์ฌ๋ฌด ์์คํ ์์ฉ ๋ถ์ผ๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ค๊ณ๋ ํฐ ๊ท๋ชจ์ ๋๋ถ๋ถ์ ์ปดํจํฐ์์ ์ญ์ง์ ๋ฐ์ดํฐ ํ์ ์ ์ํ ํ๋์จ์ด ์ง์์ ํฌํจ
- Intel CPU์ ๊ฒฝ์ฐ ์ ํ์ ์ง์
- ํ๋์จ์ด์ ์ผ๋ก BCD์ฒ๋ฆฌ๊ฐ ์ง์๋๋ ๊ฒฝ์ฐ ํ๋์จ์ด์ ์ผ๋ก ์ฒ๋ฆฌ, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ํํธ์จ์ด ์ ์ผ๋ก ์ฒ๋ฆฌ(์๋ฎฌ๋ ์ดํ ) ํจ
1
2
3
4
5
double doubleTemp = 0.1 + 0.2;
Console.WriteLine(doubleTemp == 0.3); // false
decimal decimalTemp = 0.1m + 0.2m;
Console.WriteLine(decimalTemp == 0.3m); // true
๐ซง ๋ถ๋ฆฌ์ ํ์
์ฐธ๊ณผ ๊ฑฐ์ง์ ํํํ๋ ๊ฐ์ฅ ๋จ์ํ ํ์
- ์ค์์น๋ ํ๋๊ทธ๋ฅผ ํํํ๋๋ฐ ์ฌ์ฉ
- ์ ์์ ๊ฐ์ ํ๋ฅธ ํ์ ์ด ์ด๋ฐ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ง๋ง ๊ฐ๋ ์ฑ ์ธก๋ฉด์์, ๋ถ๋ฆฌ์ ํ์ ์ฌ์ฉ
ํ ๋นํธ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ ์ปดํจํฐ์์์ ์ต์ํ์ ์ ๊ทผ ๋จ์ ๋๋ฌธ์ ํ ๋ฐ์ดํธ๋ก ๊ตฌํ
- ์์น์์ด ์กฐ๊ฑด์์ผ๋ก ํ์ฉ๋๋ ์ธ์ด๋ ์๊ณ , ์๋๋ ์ธ์ด๋ ์๊ณ
- 0 false, 1 true
๐ซง ๋ณต์์
- Python : ๋ณต์์์ ๋ณต์์ ์ฐ์ฐ์ ์ง์, ํ์๋ถ๋ j ํน์ J๋ก ํํ
1
2
3
4
>>> (5 + 2j) + (7 + 2j)
(12 + 4j)
>>> (5 + 2j) * (7 + 2j)
(31 + 24j)
๐ซง ๋ฌธ์
- ๋จ์ผ ๋ฌธ์ ๋ฐ์ดํฐ. ๋ฌธ์ ๋ฐ์ดํฐ๋ ์์น ์ฝ๋ฉ์ผ๋ก ์ปดํจํฐ์ ์ ์ฅ
- ASCII, ISO 8859-1, Unicode, โฆ
๐ซง ๋ฌธ์์ด
โฆ
๐ซ ๋ฌธ์์ด - Char String
์ผ๋ จ์ ๋ฌธ์๋ค๋ก ๊ตฌ์ฑ๋๋ ํ์
๋ฌธ์์ด ์์๋ ์ถ๋ ฅ์ ๋ ์ด๋ธ์ ๋ถ์ฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๋ชจ๋ ์ ํ์ ๋ฐ์ดํฐ์ธ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ํํ ๋ฌธ์์ด ๊ด์ ์์ ์ด๋ฃจ์ด์ง
์ค๊ณ ๊ณ ๋ ค์ฌํญ
- ๋ฌธ์์ด์ด ๋จ์ํ ๋ฌธ์ ๋ฐฐ์ด์ ํน์ํ ์ ํ์ธ๊ฐ ํน์ ๊ธฐ๋ณธ ํ์ ์ธ๊ฐ?
- ๋ฌธ์์ด์ด ์ ์ ๊ธธ์ด ํน์ ๋์ ๊ธธ์ด๋ฅผ ๊ฐ๋๊ฐ?
๐ซง ๋ฌธ์์ด๊ณผ ์ฐ์ฐ
๊ฐ์ฅ ๊ณตํต์ ์ธ ์ฐ์ฐ : ๋ฐฐ์ , ์ ํฉ, ๋ถ๋ถ ๋ฌธ์์ด ์ฐธ์กฐ, ๋น๊ต, ํจํด ๋งค์นญ, โฆ
๋ฐฐ์ , ๋น๊ต์ ๊ณ ๋ ค์ฌํญ : ๊ธธ์ด๊ฐ ๋ค๋ฅธ ๋ฌธ์์ด๊ฐ ๋ฐฐ์ ๊ณผ ๋น๊ต๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ๊ฐ?
- ๋ถ๋ถ ๋ฌธ์์ด ์ฐธ์กฐ(Substring reference)
- ์ฃผ์ด์ง ๋ฌธ์์ด์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ํ ์ฐธ์กฐ -> ์ฌ๋ผ์ด์ค(Slices)
- in c/cpp
- char ๋ฐฐ์ด๋ก ๋ฌธ์์ด ์ ์ฅ
- ๋ฐ๋์ ๋ฌธ์ โ\0โ์ผ๋ก ๋๋์ผ ํจ
- ๊ธธ์ด ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํ์ง ์๊ณ , โ\0โ๋ก ๋์ ํ์
- ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๊ฒฝ์ฐ, ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก โ\0โ์ ์ฒจ๊ฐ
- i.e. char str[] = โapplesโ;
- ํ์ค๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋ฌธ์์ด ์ฐ์ฐ์ ์ ๊ณต
- ๋ฌธ์์ด ์ฐ์ฐ ํจ์๋ โ\0โ์ ๋ง๋ ๋๊น์ง ํด๋น ์ฐ์ฐ์ ์ํ
- strcpy, strcat, strcmp, strlen
- ๋ฌธ์์ด ์ฐ์ฐ ํจ์๋ โ\0โ์ ๋ง๋ ๋๊น์ง ํด๋น ์ฐ์ฐ์ ์ํ
- char ๋ฐฐ์ด๋ก ๋ฌธ์์ด ์ ์ฅ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char temp[4] = ['T', 'e', 'm', 'p'];
char temp[5] = ['T', 'e', 'm', 'p', '\0'];
char temp[5] = "Temp"; // ์ปดํ์ผ๋ฌ๊ฐ ๋์ \0 ์ถ๊ฐ
// Data ์์ญ์ ReadOnly๋ก "Temp"๊ฐ ์ ์ฅ๋๊ณ
// Stack์์ temp ๋ณ์๊ฐ "Temp"๋ฅผ ๊ฐ๋ฆฌํด
char* temp = "Temp"; // ๋ณ์ ํฌ๊ธฐ : ์ฃผ์ ํฌ๊ธฐ
char temp[] = "Temp"; // ๋ณ์ ํฌ๊ธฐ : ๋ฌธ์ ์ ๋งํผ
// Heap, malloc์ผ๋ก ๋ง๋ค๊ธฐ
char a[10];
char b[6] = "Hello";
char c = "Hello World";
strcpy(a, c);
printf("%s\n", b); // "d" ์ถ๋ ฅ
- C
- ํ์ค๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฌธ์์ด ์กฐ์ ํจ์๊ฐ ์์ ํ์ง ์์
- ๋ชฉ์ ์ง ๋ฌธ์์ด์์ย ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ณดํธํ์ง ์์
- i.e. strcpy(dest, src) : src๊ฐ dest๋ณด๋ค ๊ธธ์ด๊ฐ ๊ธด๊ฒฝ์ฐ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์
- C++
- ํ์ค ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด์ ๋ฌธ์์ด(string) ์ง์
- C ๋ฌธ์์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ถ์์ ์ฑ์ ๋ณด์ํ๊ธฐ์ํด ๊ฐ๊ธ์ string์ ์ฌ์ฉ ๊ถ๊ณ
- Python, JS, Ruby, โฆ
- ๋ฌธ์์ด์ ๊ธฐ๋ณธ ํ์ ์ผ๋ก ์ ๊ณตํ๋ฉฐ Immutable
๐ซง ๋ฌธ์์ด ๊ธธ์ด ์ ํ์ฌํญ
- ์ ์ ๊ธธ์ด ๋ฌธ์์ด
- ๋ฌธ์์ด ๊ธธ์ด๋ ์ ์ ์ด๊ณ ๋ฌธ์์ด์ด ์์ฑ๋ ๋ ์ค์
- C++ string ํ์
- ๋ฌธ์์ด ๊ธธ์ด๋ ์ ์ ์ด๊ณ ๋ฌธ์์ด์ด ์์ฑ๋ ๋ ์ค์
- ์ ํ๋ ๋์ ๊ธธ์ด ๋ฌธ์์ด
- ๋ณ์ ์ ์์ ์ ์ธ๋๊ณ ๊ณ ์ ๋ ์ต๋ ๊ธธ์ด๊น์ง์ ๊ฐ๋ณ์ ์ธ ๊ธธ์ด๋ฅผ ๊ฐ๋ ๊ฒ์ ํ์ฉ
- C ๋ฌธ์์ด, C++์์์ C ์คํ์ผ ๋ฌธ์์ด
- ๋ณ์ ์ ์์ ์ ์ธ๋๊ณ ๊ณ ์ ๋ ์ต๋ ๊ธธ์ด๊น์ง์ ๊ฐ๋ณ์ ์ธ ๊ธธ์ด๋ฅผ ๊ฐ๋ ๊ฒ์ ํ์ฉ
- ๋์ ๊ธธ์ด ๋ฌธ์์ด
- ๋ฌธ์์ด์ด ์ต๋ ๊ธธ์ด ์ ํ์์ด ๊ฐ๋ณ๊ธธ์ด๋ฅผ ๊ฐ๋ ๊ฒ์ ํ์ฉ
- ๋์ ๊ธฐ์ต์ฅ์์ ํ ๋น๊ณผ ํด์ ๋ก ์ฑ๋ฅ์ ๋ถ๋ด์ด ์์ผ๋ ์ต๊ณ ์ ์ ์ฐ์ฑ์ ์ ๊ณต
- ์น ๋ฐ์ดํฐ๋ ๋๋ถ๋ถ ๋ฌธ์์ด์ด๋ค ๋ณด๋ ๋ง์ด ์ฐ์ฌ์
- ๋ฌธ์์ด์ด ์ต๋ ๊ธธ์ด ์ ํ์์ด ๊ฐ๋ณ๊ธธ์ด๋ฅผ ๊ฐ๋ ๊ฒ์ ํ์ฉ
๐ซง ํ๊ฐ
๋ฌธ์์ด ํ์ ์ ์ธ์ด์ ์์ฑ๋ ฅ์ ์ค์ํ ์ํฅ์ ๋ฏธ์นจ
- C ์คํ์ผ์ ๋ฌธ์์ด ์ง์ ๋ฐฉ์์ ๋ถ์์ฐ์ค๋ฌ์
- C์์๋ ๋ฌธ์์ด์ด ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ด ์๋๊ณ ๋ฌธ์ ๋ฐฐ์ด๋ก ์ฒ๋ฆฌ
- ๋ง์ฝ strcpy๊ฐ ์ ๊ณต๋์ง ์๋๋ค๋ฉด ๋ฌธ์์ด์ ๋จ์ ๋ฐฐ์ ๋ ๋ฃจํ๋ฅผ ์ฌ์ฉํด์ผ ํจ
- C์์๋ ๋ฌธ์์ด์ด ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ด ์๋๊ณ ๋ฌธ์ ๋ฐฐ์ด๋ก ์ฒ๋ฆฌ
- ๋ฌธ์์ด์ ๊ธฐ๋ณธ ํ์
์ ํฌํจ์ํค๋ ๊ฒ์ ๋น์ฉ์ด ๋ง์ง ์์
- ๋ฐ๋ผ์ ์ค๋๋ ๋๋ถ๋ถ์ ์ธ์ด์์ ๋ฌธ์์ด์ ๊ธฐ๋ณธ ๋ฐ์ดํฐํ์ ์ผ๋ก ํฌํจ
- ๋จ์ ๋ฌธ์์ด ๋น๊ต๋ ๋ฌธ์์ด ์ ํฉ ์ฐ์ฐ์ด ๊ธฐ๋ณธ ์ ๊ณต
๐ซง ๋ฌธ์์ด ํ์ ์ ๊ตฌํ
- ๋ฌธ์์ด ํ์ ์ ํ๋์จ์ด๋ก ์ง์ ์ง์ํ ์ ์์ง๋ง ๋๋ถ๋ถ ๋ฌธ์์ด ๊ธฐ์ต๊ณต๊ฐ, ๊ฒ์, ์กฐ์์ ๊ตฌํํ๊ธฐ ์ํด ์ํํธ์จ์ด์ ์ผ๋ก ์ ๊ทผ
- ๋ฌธ์์ด์ด ๋ฌธ์ ๋ฐฐ์ด๋ก ํํ๋ ๋ (C์ ๊ฒฝ์ฐ) ์ธ์ด์์ ๋ฌธ์์ด ์ฐ์ฐ์ ๊ฑฐ์ ์ ๊ณตํ์ง ์์ -> ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ๊ณต
๐ซ ๋ ์ฝ๋ ํ์
@ U ๊ธฐ๋ง๊ณ ์ฌ ์ถ์ : ๋ ์ฝ๋ ํ์ ์ ๋ํ์ฌ ์ค๋ช ํ๊ณ ๊ทธ ์์๋ฅผ ์ค๋ช ํ์์ค.
- ๊ฐ ์์๋ค์ด ์ด๋ฆ์ผ๋ก ์๋ณ
- ๊ตฌ์กฐ์ ์์๋ถํฐ ์คํ์
์ ํตํด ์ ๊ทผ
- ๊ฐ๊ฐ์ ์์๋ค์ด ๋์ผํ ํ์ ์ด๋ ํฌ๊ธฐ๊ฐ ์๋ ๋ฐ์ดํฐ์ ๋ชจ์์ ๋ชจ๋ธ๋ง ํ ๋ ๋น๋ฒํ๊ฒ ์ฌ์ฉ
@ ? Java ๊ตฌ์กฐ์ฒด ๋ฐ๋ก ์๋๋ฐ?
@ TODO : Java ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
class loading (code + data)
stack
heap (managed by JVM GC)
๐ซง ํ๊ฐ_๋ ์ฝ๋ ํ์
์ค๊ณ๋ ๊ฐ๋จํ๋ฉฐ ์ฌ์ฉ์ ์์ ํ๋ค.
- vs ๋ฐฐ์ด
- ๋ ์ฝ๋๋ ์ด์ง์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํ์ฉ
- ๋ ์ฝ๋์ ์์๋ ํ๋๋ก ์ ๊ทผ (์์ธ X)
- ์์๋ฅผ ๊ณ ๋ คํ ํ์๊ฐ ์์
๐ซ ํํ
- ๋ ์ฝ๋ ํ์
๊ณผ ๋น์ทํ๋ ์์๋ค์ ์ด๋ฆ์ผ๋ก ๋ช
๋ช
ํ์ง๋ ์์
- ๋ ์ฝ๋ ํ์ ์ฒ๋ผ ์์๋ค์ด ์ด์ง์ ์ธ ํ์ ์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
- Python์ immutableํ ํํ ํ์
์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ผ๋ก ์ ๊ณต
- ์ด์ง์ ์ธ ์์๋ฅผ ํ์ฉํ๋ฉฐ ์์์ ์ ๊ทผ์์๋ ์ฒจ์๋ก ์ ๊ทผ
- ํํ์ ํจ์๊ฐ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ ๊ฒ์ ํ์ฉํ๊ธฐ ์ํด
@ TODO : Python ๊ดํธ ์ข ๋ฅ์ ๋ฐ๋ฅธ ์ปจํ ์ด๋ ์ข ๋ฅ
๐ซ ๋ฆฌ์คํธ
C#, Java :ย ํ์ค๋ผ์ด๋ธ๋ฌ๋ฆฌ, List, ArrayList
- Python : ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
- ๋๊ดํธ
- mutable (ํํ์ immutable)
- ์์ ์ญ์ del temp[1]
- Pythonย List Comprehension
- ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋งค์ปค๋์ฆ์ผ๋ก ์งํฉ ํ๊ธฐ๋ฒ์ ๊ธฐ๋ฐ
- [์ forย ์์ in ๋ฐฐ์ด if ์กฐ๊ฑด]
- i.e. [x * x for x in range(12) if x % 3 == 0]
- ์ฌ๋ผ์ด์ค ์ฐ์ฐ๋ ์ ๊ณต
- ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋งค์ปค๋์ฆ์ผ๋ก ์งํฉ ํ๊ธฐ๋ฒ์ ๊ธฐ๋ฐ
๐ซ ๊ณต์ฉ์ฒด(Union) ํ์
1
2
3
4
5
6
7
8
9
10
11
12
13
union FlexType
{
int intE1;
float floatE1;
};
union FlexType el1;
float x;
// ...
eli.intE1 = 27;
x = eli.floatE1;
- C/C++๋ ํ์
๊ฒ์ฌ์ ๋ํ ์ธ์ด ์ง์์ด ์๋ ์์ ย ๊ณต์ฉ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ๊ณต
- C/C++์์ union ํค์๋๋ union ๊ตฌ์กฐ์ฒด๋ฅผ ๋ช ์ธํ๋๋ฐ ์ฌ์ฉ
- i.e. el1.floatE1์ x์ย ๋ฐฐ์ , ์ด๋ ํ์ ๊ฒ์ฌ๋ฅผ ํ์ง ์์
- ์ ์ฐ๋? Low-level ์์คํ ํ๋ก๊ทธ๋๋ฐ์ ๊ณต์ฉ์ฒด๋ฅผ ์ฌ์ฉ (์๋ฒ ๋๋ ์์คํ /๋คํธ์ํฌ)
- ๋ณ์๊ฐ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ค๋ฅธ ์๊ธฐ์ ๋ค๋ฅธ ํ์ ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ ํ์
- ์ค๊ณ ๊ณ ๋ ค์ฌํญ
- ํ์ ๊ฒ์ฌ๊ฐ ์๊ตฌ๋๋๊ฐ?
- ๊ณต์ฉ์ฒด๊ฐ ๋ ์ฝ๋์ ํฌํจ๋ ์ ์๋๊ฐ?
- ํ๋ณ ๊ณต์ฉ์ฒด์ ์์ ๊ณต์ฉ์ฒด
- ์์ ๊ณต์ฉ์ฒด: ํ์ ๊ฒ์ฌ์ ๋ํ ์ธ์ด ์ง์์ด ์๋ ํํ์ ๊ณต์ฉ์ฒด: C/C++
- ํ๋ณ ๊ณต์ฉ์ฒด: ๊ณต์ฉ์ฒด ๊ตฌ์กฐ์ ํ์ ์ง์์(ํ๋ณ์)๊ฐ ํฌํจ๋์ด์์ด์ย ์ด๋ฅผ ์ด์ฉํ์ฌ ํ์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ ๊ณต์ฉ์ฒด
- ํ๊ฐ
- ๊ฐํ์
์ธ์ด๊ฐ ์๋ ๊ฒฝ์ฐ, ๊ณต์ฉ์ฒด๋ ์์ ์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์
- C/C++ ์ ๊ฐํ์ ์๋
- Java/C#์ ๊ณต์ฉ์ฒด๊ฐ ์์
- ๊ฐํ์
์ธ์ด๊ฐ ์๋ ๊ฒฝ์ฐ, ๊ณต์ฉ์ฒด๋ ์์ ์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์
- vs ๊ตฌ์กฐ์ฒด
- ๊ตฌ์กฐ์ฒด์ ๊ฐ์ ๋ฌธ๋ฒ
- ๊ตฌ์กฐ์ฒด๋ ๊ฐ ์์๊ฐ ๊ฐ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง
- ๊ณต์ฉ์ฒด๋ ๋ชจ๋ ์์๊ฐ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์
- ์์๋ค ์ค ๊ฐ์ฅ ํฐ ์์ ํฌ๊ธฐ ๋งํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
- ๊ณต์ ํ๋ ๋๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ด๋ค ํ์ ์ผ๋ก ์ ๊ทผํ๋ - ์ด๋ค ๋ชจ๋๋ก ์ ๊ทผํ ๊ฑฐ๋
- ์ ์?
- ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
- ํ๋์๋ ๋ฉ๋ชจ๋ฆฌ ๋๋ํด์ ธ์ ๊ตฌ์กฐ์ฒด ์ฐ๊ธฐ ๊ณต์ฉ์ฒด๋ ์ ์์ฐ๋ ๋ฏ?