๊ณต์ฉ์ฒด(union) : ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐํ์ ํ ๋ฒ์ ํ ๊ฐ์ง๋ง ๋ณด๊ดํ ์ ์๋ ๋ฐ์ดํฐ ํ์
ex)
union one4all
{
int int_val;
long long_val;
double double_val;
};
one4all ๋ณ์๋ intํ์ด๋ longํ์ด๋ doubleํ์ ๋ณด๊ด ํ ์ ์์ง๋ง ์ด๋ํ ์์ ์ ์ด๋ ํ๊ฐ์ง๋ง ๋ณด๊ด ๊ฐ๋ฅ
one4all pail;
pail.int_val=15;
cout<<pail.int_val;
pail.double_val=1.38; //doubleํ ์ ์ฅ, intํ ์์ค
cout<<pail.double_val;
๊ณต์ฉ์ฒด์ ํฌ๊ธฐ๋ ๊ฐ์ฅ ํฐ ๋ฉค๋ฒ์ ํฌ๊ธฐ๊ฐ ๋๋ค.
์ฌ๋ฌ ๊ฐ์ง ๋ฐ์ดํฐํ์ ์ฌ์ฉํ ์๋ ์์ง๋ง ์ด๋ค์ ๋์์ ์ฌ์ฉํ ์ ์์ ๋, ๊ณต์ฉ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ๊ฐ๋ฅ
ex) ์ผ๋ถ๋ ์ ์ ID๋ก ์๋ณํ๊ณ , ์ผ๋ถ๋ ๋ฌธ์์ด ID๋ก ์๋ณํ๋ ํผํฉ ๋ถํ๋ค์ ์ฌ๊ณ ๋ฅผ ๊ด๋ฆฌํ ๋
๊ณต์ฉ์ฒด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋จ.
์ด๊ฑฐ์ฒด
c++์ enum ๊ธฐ๋ฅ์ ๊ธฐํธ ์์๋ฅผ ๋ง๋ค ์ ์์
๋ํ ์ ํ์ ์ธ ์๋ก์ด ๋ฐ์ดํฐํ์ ์ ์ํ๊ฒ ํจ
enum spectrum {red,orange,yellow,green,blue};
1. spectrum์ ์๋ก์ด ๋ฐ์ดํฐํ์ ์ด๋ฆ์ผ๋ก ๋ง๋ฆ
enumํ ๋ณ์๋ฅผ ์ด๊ฑฐ์ฒด(enumeration)๋ผ ๋ถ๋ฆ
2. red, orange ... ๋ฑ์ 0์์ 4๊น์ง์ ์ ์ ๊ฐ์ ๋ํ๋ด๋ ๊ธฐํธ ์์๋ก ๋ง๋ฆ
๊ธฐ๋ณธ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ์ด๊ฑฐ์์ 0, ๋ ๋ฒ์งธ์ 1์ด ๋์ ๋๋ ๋ฐฉ์.
์ด๊ฑฐ์ฒด์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ด๊ฑฐํ์ ๋ณ์ ์ ์ธ ๊ฐ๋ฅ
spectrum band;
์ด๊ฑฐ์ฒด ๋ณ์์ ํน์ฑ
1. ์ด๊ฑฐ์ ๊ฐ๋ค๋ง ๋์ ๊ฐ๋ฅ
band = blue; //๋ง์
band = 2000; //ํ๋ฆผ
2. ๋์ ์ฐ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ (์ผ๋ถ c++ ์ ์ธ)
band = orange + red; //ํ๋ฆผ
++band; //ํ๋ฆผ
์ด๊ฑฐ์๋ค์ ์ ์ํ์ด๋ฉฐ intํ์ผ๋ก ์น๊ธ ๊ฐ๋ฅ
ํ์ง๋ง intํ์ด ์๋์ผ๋ก ์ด๊ฑฐ์ฒด๋ก ๋ณํ๋์ง ์์
int color = blue; //๋ง๋ค, spectrumํ์ด intํ์ผ๋ก ์น๊ธ
band = 3; //ํ๋ฆผ, intํ์ด spectrumํ์ผ๋ก ์น๊ธ๋์ง ์์
color = 3 + red; //red๊ฐ intํ์ผ๋ก ๋ณํ
band = orange + red; //๊ทธ๋ด๋ฏํ์ง๋ง ํ๋ฆผ
์ด๊ฑฐ์๋ค์ ๋ํด +์ฐ์ฐ์๋ ์ ์๋์ง ์์
์ด๊ฑฐ์๋ค์ ์ฐ์ ์์์์ ์ ์๋ก ๋ณํ๋จ. orange + red๋ 1+0(int ํ)์ผ๋ก ๋ณํ
intํ์ spectrum๋ณ์์ธ band์ ๋์ ๋ถ๊ฐ
๊ฐ์ด ์ ๋นํ๊ณ ๋ช ์์ ์ธ ๋ฐ์ดํฐํ ๋ณํ ์ฌ์ฉ ์, intํ ๊ฐ์ ์ด๊ฑฐ์ฒด ๋ณ์ ๋์ ๊ฐ๋ฅ
band = spectrum(3);
๋ถ์ ๋นํ ๊ฐ์ ๋ํด ๋ฐ์ดํฐํ ๋ณํ ์๋ ์ ๊ฒฐ๊ณผ ๋ฏธํ์
band = spectrum(40003); //๋ฏธํ์
์ด๊ฑฐ์ ๊ฐ์ ์ค์
๋์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ฑฐ์์ ๊ฐ(์ ์ํ๋ง ๊ฐ๋ฅ)์ ๋ช ์์ ์ผ๋ก ์ง์ ๊ฐ๋ฅ
enum bits {one = 1, two = 2, four = 4, eight = 8};
enum {zero,null=0,one,numero_uno=1};
1. ํ๋ ์ด์์ ์ด๊ฑฐ์๋ค์ด ๊ฐ์ ๊ฐ์ ๊ฐ์ง ์ ์์
2. ์ด๊ธฐํ๋์ง ์์ ์ด๊ฑฐ์๋ค์ ๋ฐ๋ก ์์ ์ด๊ฑฐ์๋ณด๋ค 1๋งํผ ํฌ๋ค
3. ์ผ๋ถ ์ด๊ฑฐ์์๋ง ๋ช ์์ ์ผ๋ก ๊ฐ ๋์ ๊ฐ๋ฅ
์ด๊ฑฐ์ฒด์ ๊ฐ ๋ฒ์
๊ฐ ์ด๊ฑฐ์ฒด๋ ๊ฐ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค.
์ด๋ค ์ ์ ๊ฐ์ด ๊ทธ ๋ฒ์ ์์ ์์ผ๋ฉด, ์ด๊ฑฐ์ ๊ฐ์ด ์๋๋๋ผ๋ ๋ฐ์ดํฐํ ๋ณํ์ ํตํด ์ด๊ฑฐ์ฒด ๋ณ์์ ๋์ ๊ฐ๋ฅ
enum bits {one = 1, two = 2, four = 4, eight = 8};
bits myflag;
myflag = bits(6); // 6์ด bits ๋ฒ์ ์์ ์์ผ๋ฏ๋ก ๋ง์
์ด๊ฑฐ์ฒด์ ๊ฐ ๋ฒ์ ์ ์ ๋ฐฉ๋ฒ
1. ์ํ์ ์ฐพ๊ธฐ ์ํด ์ด๊ฑฐ์ ๊ฐ ์ค์์ ์ต๋๊ฐ์ ์ทจํจ
2. ์ต๋๊ฐ๋ณด๋ค ํฐ 2์ ์ต์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๊ตฌํจ
3. ๊ฑฐ๊ธฐ์์ 1์ ๋บ ๊ฒ์ด ์ํ
4. ํํ์ ์ฐพ๊ธฐ ์ํด ์ต์๊ฐ ์ทจํจ
5. ์ต์๊ฐ์ด 0์ด๊ฑฐ๋ 0๋ณด๋ค ํฌ๋ฉด ๊ฐ ๋ฒ์์ ํํ์ 0 ์
6. ์ต์๊ฐ์ด ์์์ด๋ฉด ์ํ์ ๊ตฌํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์ํ์ ๊ตฌํ ํ ๋ง์ด๋์ค ๋ถํธ๋ฅผ ๋ถ์ธ๋ค.
ex) -6์ด ์ต์๊ฐ -> 2^3=8, 8-1=7, -7)