๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“— Book/์ž๋ฐ”์˜ ์ •์„

3-6์žฅ ๊ธฐํƒ€ ์—ฐ์‚ฐ์ž

by hyeon-z 2023. 3. 14.

 

 

1. ์กฐ๊ฑด ์—ฐ์‚ฐ์ž ?:

๐Ÿ’ก ์กฐ๊ฑด์‹, ์‹ 1, ์‹2 ๋ชจ๋‘ ์„ธ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์‚ผํ•ญ ์—ฐ์‚ฐ์ž

์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true์ด๋ฉด ์‹1, false์ด๋ฉด ์‹ 2๊ฐ€ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค.

 

์˜ˆ์‹œ

 

 

์ค‘์ฒฉ๋œ ์กฐ๊ฑด์—ฐ์‚ฐ์ž

 

์กฐ๊ฑด ์—ฐ์‚ฐ์ž์˜ ๊ฒฐํ•ฉ๊ทœ์น™ ์˜ค๋ฅธ์ชฝ → ์™ผ์ชฝ

 

ex) x = 3์ธ ๊ฒฝ์šฐ

result = x > 0 ? 1 : (x == 0 ? 0 : -1)
-> result = x > 0 ? 1 : (3 == 0 ? 0 : -1)
-> result = x > 0 ? 1 : (false ? 0 : -1)
-> result = x > 0 ? 1 : -1
-> result = 3 > 0 ? 1 : -1
-> result = true ? 1 : -1
-> result = 1

 

์‚ฐ์ˆ  ๋ณ€ํ™˜

 

์‹ 1๊ณผ ์‹ 2, ์ด ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ์‚ฐ์ˆ  ๋ณ€ํ™˜ ๋ฐœ์ƒ

x = x + (mod < 0.5 ? 0 : 0.5);  // 0๊ณผ 0.5์˜ ํƒ€์ž…์ด ๋‹ค๋ฅด๋‹ค.
—> x = x + (mod < 0.5 ? 0.0 : 0.5)  // 0์ด 0.0์œผ๋กœ ๋ณ€ํ™˜๋˜์—ˆ๋‹ค.

 

2. ๋Œ€์ž… ์—ฐ์‚ฐ = op=

๐Ÿ’ก ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์ €์žฅ ๊ณต๊ฐ„์— ๊ฐ’ ๋˜๋Š” ์ˆ˜์‹์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

์—ฐ์‚ฐ์ž๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ → ์ œ์ผ ๋‚˜์ค‘์— ์ˆ˜ํ–‰๋œ๋‹ค.

 

๊ฒฐํ•ฉ ๊ทœ์น™: ์˜ค๋ฅธ์ชฝ → ์™ผ์ชฝ

 

lvalue์™€ rvalue

 

์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž: lvalue(left value)

์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž: rvalue(right value)

 

rvalue๋Š” ๋ณ€์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹์ด๋‚˜ ์ƒ์ˆ˜ ๋“ฑ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅ

lvalue๋Š” ๋ฐ˜๋“œ์‹œ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค.

int i = 0;
3 = i + 3;  // ์—๋Ÿฌ. lvalue๊ฐ€ ๊ฐ’์„ ์ €์žฅํ•  ์žˆ๋Š” ๊ณต๊ฐ„์ด ์•„๋‹ˆ๋‹ค.
i + 3 = i;  // ์—๋Ÿฌ. lvalue์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” ๋ฆฌํ„ฐ๋Ÿด (i + 3 -> 3)

final int MAX = 3;  // ๋ณ€์ˆ˜ ์•ž์— ํ‚ค์›Œ๋“œ final์„ ๋ถ™์ด๋ฉด ์ƒ์ˆ˜๊ฐ€ ๋œ๋‹ค.
MAX = 10;  // ์—๋Ÿฌ. ์ƒ์ˆ˜(MAX)์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.

 

๋ณตํ•ฉ ๋Œ€์ž… ์—ฐ์‚ฐ์ž

 

๐Ÿ’ก๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž(op)์™€ ๊ฒฐํ•ฉํ•˜์—ฌ op= ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ

 

๋งˆ์ง€๋ง‰ ์ค„ ์œ ์˜!

i *= 10 + j;

i = i * 10 + j;  // No
i = i * (10 + j)  // ์ •๋‹ต

 

 

Reference

์ž๋ฐ”์˜ ์ •์„ - ๋‚จ๊ถ ์„ฑ

๋Œ“๊ธ€