2-3 ์˜คํผ๋ ˆ์ดํ„ฐ. (์—ฐ์‚ฐ์ž.)

์•„๋ž˜ ๋งํฌ๋Š” ์˜คํผ๋ ˆ์ดํ„ฐ์— ๋Œ€ํ•œ cplusplus ๋‹ท์ปด์˜ ๋ฌธ์„œ๋‹ค.


http://www.cplusplus.com/doc/tutorial/operators/


๋งํฌ์˜ ๋งจ ์•„๋ž˜ ํ‘œ๋ฅผ ๋ณด๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜คํผ๋ ˆ์ดํ„ฐ๋“ค์ด ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ๋“ค์ค‘ ๋ช‡๊ฐ€์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. (์–ธ๊ธ‰ํ•˜์ง€ ์•Š์€ ๋ช‡๊ฐ€์ง€๋Š” ๋‹ค์Œ ํŠœํ† ๋ฆฌ์–ผ๋•Œ ๋ด๋„ ๋ ๊ฑฐ ๊ฐ™์•„์„œ ๋„˜์–ด๊ฐ.)



2-3-1 Assignment ์˜คํผ๋ ˆ์ดํ„ฐ ( ๋Œ€์ž… ์—ฐ์‚ฐ์ž) ย =


๋Œ€์ž… ์—ฐ์‚ฐ์„ ํ• ๋•Œ ์“ฐ๋Š” ์˜คํผ๋ ˆ์ดํ„ฐ์ด๋‹ค. int i = 3; ๊ณผ ๊ฐ™์ด ์™ผ์ชฝ์— ์žˆ๋Š” ๋ณ€์ˆ˜์— ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ๋Œ€์ž…ํ• ๋•Œ ์“ด๋‹ค. ์—ฌ๊ธฐ์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์€ l value ์™€ r value์— ๋Œ€ํ•œ ๋‚ด์šฉ์ธ๋ฐ, ์•„๋ž˜ ๋งํฌ๋กœ ๊ฐ์„ ์žก์•„๋„ ๋˜๊ณ , ์ฑ…์—์„œ ์ฐพ์•„๋ด๋„ ๋œ๋‹ค. ๋‡Œํ”ผ์…œ+@์— ๊ฐ€๊นŒ์šด ๋‚ด ์„ค๋ช… ๋˜๋Š” ์ฃผ๊ด€์ ์ธ ํ•ด์„ ๋ณด๋‹จ ๋ ˆํผ๋Ÿฐ์Šค์ชฝ์„ ์ฐพ์•„๋ณด๋Š”๊ฒŒ ํ›จ์”ฌ ์ •ํ™•ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (๋ฒˆ์—ญ์€ ์œผ์Œโ€ฆ ์šฐ์ธก๊ฐ’, ์ขŒ์ธก๊ฐ’์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค๋Š”๋ฐ, ๊ทธ๋ƒฅ LValue RValue ๊ทธ๋Œ€๋กœ ์“ฐ๋Š”๊ฒŒ ์˜๋ฏธ์ „๋‹ฌ์ด ์ž˜ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹คโ€ฆ)


https://msdn.microsoft.com/en-us/library/f90831hc.aspx


๋Œ€๋žต์ ์œผ๋กœ, C++์—์„œ ์˜ค๋ฅธ์ชฝ ๊ฐ’์€, ์™ผ์ชฝ ๊ฐ’์ด ์•„๋‹Œ ๊ฐ’์ด๋ผ ๋ณด๋ฉด ๋œ๋‹คโ€ฆ ย ์ •์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€, ์ด๋™ ๊ฐ€๋Šฅํ•œ์ง€ ๋“ฑ๋“ฑ์˜ ํŒ๋ณ„๋ฒ•์œผ๋กœ ์™ผ์ชฝ ๊ฐ’๊ณผ ์˜ค๋ฅธ์ชฝ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ,


์™ผ์ชฝ ๊ฐ’์€ ์ •์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ์ด๋™์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ ,

์˜ค๋ฅธ์ชฝ ๊ฐ’์€ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒƒ์ด๋‹ค.


์ฆ‰ ์˜ค๋ฅธ์ชฝ ๊ฐ’์—๋Š” ์ •์ฒด๊ฐ€ ์—†์–ด์„œ, = ์˜คํผ๋ ˆ์ดํ„ฐ๋กœ ๋Œ€์ž… ํ• ์ˆ˜๊ฐ€ ์—†๊ณ , ์™ผ์ชฝ๊ฐ’์—๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.



TC++PL ๊ฐ™์€ ์ฑ…์„ ๋ณด๋ฉด ์ž์„ธํžˆ ๋‚˜์˜ค๋‹ˆ๊นŒ ๋” ๊นŠ๊ฒŒ ์•Œ์•„๋ณด๋ ค๋ฉด ํ•œ๊ถŒ ์‚ฌ์„œ ๋ณด๋Š”๊ฒƒ๋„ ์ข‹๋‹ค...



2-3-2 Arithmetic ์˜คํผ๋ ˆ์ดํ„ฐ(์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž) ย +, -, *, /, %


๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฐ์ˆ˜? ๊ณ„์‚ฐ์„ ํ• ๋•Œ ์“ฐ๋Š” ์˜คํผ๋ ˆ์ดํ„ฐ ๋“ค์ด๋‹ค.

์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์—ฐ์‚ฐํ•œ๋‹ค. ๊ฒฐ๊ณผ๋Š” ์˜ค๋ฅธ์ชฝ ๊ฐ’์ด๊ณ , ๊ทธ ๊ฒฐ๊ณผ


int a = 1; int b = 2;

์ผ๋•Œ


a+b = 0;

๊ฐ™์€ ์‹์€ C++์—์„œ ์“ธ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.


+๋Š” ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š”๊ฒƒ์„ ๋”ํ•œ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ฃผ๊ณ ,

-๋Š” ๋บ€ ๊ฐ’์„

*๋Š” ๊ณฑํ•œ ๊ฐ’์„

/๋Š” ๋‚˜๋ˆˆ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.


%๋Š” ๋‚˜๋จธ์ง€๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š”๋ฐ, int ๊ฐ™์€ ์ •์ˆ˜ํ˜• ํƒ€์ž…์—๋งŒ ์“ธ์ˆ˜ ์žˆ๋‹ค. (๋”ฐ๋กœ fmod๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค.)



2-3-3 bitwise (๋น„ํŠธ ์—ฐ์‚ฐ์ž) <<, >>, &, ^, |


<<์™€ >>์€ ๋น„ํŠธ๋ฅผ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฏธ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

3 << 1 ๊ฐ™์€ ์‹์ด๋ฉด


3์ด ๋น„ํŠธ๋กœ ๋ณด๋ฉด 0011์ด๋‹ˆ๊นŒ, 0110์œผ๋กœ ํ•œ์นธ ์™ผ์ชฝ์œผ๋กœ ๋ฐ€๋ ค๋‚˜๊ณ , ๊ฒฐ๊ณผ ๊ฐ’์€ 6์ด ๋˜๋Š” ๊ทธ๋Ÿฐ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ฐ”๋กœ ๋น„ํŠธ๋ฅผ ์กฐ์ž‘ํ•ด๋ฒ„๋ฆฌ๋‹ˆ, ์–ด์…ˆ๋ธ”๋ฆฌ์ƒ์—์„œ ๊ฐ€์žฅ ๋น ๋ฅธ ์—ฐ์‚ฐ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•˜๋‹ค.


&, ^, | ์€ ๊ฐ๊ฐ AND, XOR, OR์— ํ•ด๋‹นํ•˜๋Š” ๋น„ํŠธ ์—ฐ์‚ฐ์ด๋‹ค.


๋น„ํŠธ๋กœ 1111๊ณผ 1001 ย ์ด ์žˆ์„๋•Œ ๊ฐ ์—ฐ์‚ฐ์ž๋“ค๋กœ ์—ฐ์‚ฐ์„ ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค.


1111 & 1001 = 1001,

1111^1001 = 0110,

1111|1001 = 1111


&๋Š” ์–‘์ชฝ ๋‹ค true์ธ bit๊ฐ€ true, ํ•œ์ชฝ์ด๋ผ๋„ false๋ฉด false๋ฅผ ๋œปํ•˜๊ณ ,

^๋Š” ์–‘์ชฝ์ด ๊ฐ™์œผ๋ฉด false ์–‘์ชฝ์ด ๋‹ค๋ฅด๋ฉด true๋ฅผ ๋œปํ•œ๋‹ค.

|์€ ํ•œ์ชฝ๋งŒ ๊ฐ™์•„๋„ true๊ณ , ์–‘์ชฝ ๋‹ค ๋‹ฌ๋ผ์•ผ false๋ฅผ ๋œปํ•จ.



2-3-4 compound assignment (ํ•ฉ์„ฑ ๋Œ€์ž…์—ฐ์‚ฐ์ž) *=, /=, %=, +=, -=, >>=, <<=, &=, ^=, |=


๊ฐ์ข… ์—ฐ์‚ฐํ›„์— ๋Œ€์ž…๊นŒ์ง€ ํ•ด์ฃผ๋Š” ์˜คํผ๋ ˆ์ดํ„ฐ๋“ค์ด๋‹ค ์œ„์—์„œ๋ณธ ๋”ํ•˜๊ธฐ ๋นผ๊ธฐ๋„ ์žˆ๊ณ , ๋น„ํŠธ์—ฐ์‚ฐ์— ๊ด€ํ•œ๊ฒƒ๋„ ์žˆ๋‹ค.




2-3-5 comparison (๋น„๊ต์—ฐ์‚ฐ์ž) <, >, <=, >=, ==, !=


a<b (a ๊ฐ€ b ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ฐธ, ํฌ๋ฉด ๊ฑฐ์ง“) a๊ฐ€ b ๋ฏธ๋งŒ์ผ๋•Œ

a>b (a ๊ฐ€ b ๋ณด๋‹ค ํฌ๋ฉด ์ฐธ, ์ž‘์œผ๋ฉด ๊ฑฐ์ง“) a๊ฐ€ b ์ดˆ๊ณผ์ผ๋•Œ

a<=b (a ๊ฐ€ b ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ฐธ, ํฌ๋ฉด ๊ฑฐ์ง“) a๊ฐ€ b ์ดํ•˜์ผ๋•Œ

a>=b (a ๊ฐ€ b ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ฐธ, ์ž‘์œผ๋ฉด ๊ฑฐ์ง“) a๊ฐ€ b ์ด์ƒ์ผ๋•Œ


์™€ ๊ฐ™์Œ.


a==b (a๊ฐ€ b์™€ ๊ฐ™์„๋•Œ ์ฐธ, ๋‹ค๋ฅผ๋•Œ ๊ฑฐ์ง“)

a != b (a๊ฐ€ b์™€ ๋‹ค๋ฅผ๋•Œ ์ฐธ, ๊ฐ™์„๋•Œ ๊ฑฐ์ง“)



2-3-6 logical(๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž) &&, ||


๋…ผ๋ฆฌ์ ์œผ๋กœ AND ์ผ๋•Œ &&๋ฅผ ์“ฐ๊ณ , ๋…ผ๋ฆฌ์ ์œผ๋กœ OR ์ผ๋•Œ ||๋ฅผ ์”€.


์œ„์˜ ๋น„ํŠธ ์—ฐ์‚ฐ์ฒ˜๋Ÿผ. &&์˜ ๊ฒฝ์šฐ a๋„ ์ฐธ์ด๊ณ , b๋„ ์ฐธ์ผ๋•Œ ์ฐธ.

||์˜ ๊ฒฝ์šฐ ๋‘˜์ค‘ ํ•˜๋‚˜๋งŒ ์ฐธ ์ด๋ผ๋„ ์ฐธ.





2-3-7 conditional (์กฐ๊ฑด ์—ฐ์‚ฐ์ž.)


?: ๋ฅผ ์จ์„œ ์“ฐ๋Š” ์—ฐ์‚ฐ์ž์ธ๋ฐ, ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋‹ˆ, if else๋ฅผ ์“ฐ๋Š”๊ฒŒ ๋ณด๊ธฐ ์ข‹์Œ. ๋ฌผ๋ก  ์—ฌ๊ธฐ์„  ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์จ๋ณด์ž๋ฉด (๋…ผ๋ฆฌ) ? (์ฐธ):(๊ฑฐ์ง“) ์˜ ํ˜•ํƒœ๋กœ ์”€.


1
2
3
4
5
6
7
8
9
10
#includeย <iostream>
ย 
intย main(void)ย 
{ย ย 
ย ย ย ย ย ย intย iย =ย 1,ย jย =ย 2;ย ย 
ย ย ย ย ย ย 
ย ย ย ย std::coutย <<ย (ย iย >ย jย ?ย iย :ย jย )ย <<ย "ย isย greater."ย <<ย std::endl;ย ย 
ย 
ย ย ย ย reutrunย 0;
}ย ย 
cs


์ฒ˜๋Ÿผ ์“ธ์ˆ˜ ์žˆ์Œ.


์˜ˆ์ œ์—์„œ๋Š” i๊ฐ€ j๋ณด๋‹ค ํด๋•Œ, ์ฐธ์ด๋ฉด i๋ฅผ, ๊ฑฐ์ง“์ด๋ฉด j๋ฅผ ๋ฆฌํ„ดํ•˜๋Š”๊ฒƒ์ž„.

๊ทธ๋ฆฌ๊ณ  conditional operator๋Š” ํ•ญ์ด 3๊ฐœ ๋“ค์–ด๊ฐ„๋‹ค.



์—ฌ๊ธฐ๊นŒ์ง€ ์ดํ•ญ์—ฐ์‚ฐ์ž? binary operator์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋‹ค.

๋‹ค์Œ์€ ๋‹จํ•ญ์—ฐ์‚ฐ์ž (unary operator๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.


๋‹จํ•ญ์—ฐ์‚ฐ์—” postfix์™€ prefix๊ฐ€ ์žˆ๋Š”๋ฐ, ์ƒ๊ธด๊ฑด ๋น„์Šทํ•ด๋„, ๋‚ด์šฉ์€ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž„. (๋‚˜์ค‘์— class๋ฅผ ๋‹ค๋ฃจ๋Š” ํŠœํ† ๋ฆฌ์–ผ๋•Œ ๊ตฌํ˜„์„ ํ•ด๋ณด๊ณ  ์ง€๊ธˆ์€ ๋ง›๋งŒ ๋ณด๊ณ  ๋„˜์–ด๊ฐ€์ž;;)


๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ postfix๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์Œ์ค„์—์„œ ์ ์šฉ๋˜๊ณ , prefix๋Š” ์ด๋ฒˆ์ค„์—์„œ ์ ์šฉ๋˜๊ณ  ๋„˜์–ด๊ฐ„๋‹ค.


int i = 1;

int j = ++i; (prefix)

int k = i++; (postfix)


๋ฅผ ํ–ˆ์„๋•Œ, j๋Š” prefix ์—ฐ์‚ฐ๋•Œ๋ฌธ์—, 2๊ฐ€ ๋˜๊ณ  ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค.

k๋Š” postfix ์—ฐ์‚ฐ๋•Œ๋ฌธ์—, 2๋ฅผ ์ „๋‹ฌ ๋ฐ›๊ณ ๋‚˜์„œ, i๊ฐ€ ์ฆ๊ฐ€ํ•ด 3์ด ๋œ๋‹ค.


์ด ++์™€ -- ์™ธ์˜ ๋‹ค๋ฅธ postfix ์—ฐ์‚ฐ์ž์™€, prefix ์—ฐ์‚ฐ์ž๋Š” ๊ฒน์น˜๋Š”๊ฒŒ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋ณ„๋กœ ํ–‡๊น”๋ฆฌ์ง€ ์•Š์œผ๋‹ˆ, ๋‹ค์Œ ์—ฐ์‚ฐ์ž๋ฅผ ๋ณด์ž.


postfix ๋‹จํ•ญ์—ฐ์‚ฐ์ž. (์ ‘๋ฏธ๋‹จํ•ญ์—ฐ์‚ฐ์ž?)

์–˜๋„ค๋“ค์€ ํ‘œํ˜„๋’ค์— ์“ฐ์ธ๋‹ค.


() - ํ•จ์ˆ˜ ํ˜•ํƒœ์˜ ์—ฐ์‚ฐ์ž.


[] - ๋ฐฐ์—ด์— ์“ฐ์ด๋Š” subscript ์—ฐ์‚ฐ์ž. (๋”ฑํžˆ ๋ฒˆ์—ญํ• ๋งŒํ•œ๊ฒŒ ์—†๋‹ค;;)

postfix-expression [ expression ] ๋กœ ์“ฐ์ธ๋‹ค.



prefix ๋‹จํ•ญ์—ฐ์‚ฐ์ž. (์ ‘๋‘๋‹จํ•ญ์—ฐ์‚ฐ์ž??)

์–˜๋„ค๋“ค์€ ํ‘œํ˜„ ์•ž์— ์“ฐ์ธ๋‹ค.


~

๋น„ํŠธ ์—ฐ์‚ฐ์˜ NOT ์—ฐ์‚ฐ์— ์“ฐ์ด๋Š” ์—ฐ์‚ฐ์ž.


~1001 ์€ 0110 ์ด๋‹ค.


!

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ NOT ์—ฐ์‚ฐ์— ์“ฐ์ด๋Š” ์—ฐ์‚ฐ์ž.

!false ์€ true ์ด๋‹ค.


-

๊ฐ’์„ ์Œ์ˆ˜๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.


&, * ์ฐธ์กฐ, ์—ญ์ฐธ์กฐ(๋ ˆํผ๋Ÿฐ์Šค, ๋””๋ ˆํผ๋Ÿฐ์Šค)์— ์“ฐ์ด๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

๋‹ค์Œ์— ํฌ์ธํ„ฐ ํ• ๋•Œ ๋ณด์ž.


new/delete

ํ• ๋‹น/ํ•ด์ œ ์— ์“ฐ์ด๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค. C์˜ malloc/free ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค.

์ด ์™ธ์—๋„ ๋งŽ์€ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์ง€๋งŒ, ์ฐจ์ฐจ ์•Œ์•„๋ณด๊ณ , ์ง€๊ธˆ์€ ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜์ž.


์“ฐ๋Š”๋ฐ 2์ผ์ด๋‚˜ ๊ฑธ๋ฆฌ๋‹ค๋‹ˆ... ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค ใ… ใ