ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] ์—ฐ์‚ฐ์ž (Operator)
    Swift 2022. 1. 6. 22:38

    (๋ชจ๋“  ์ฝ”๋“œ๋Š” Playground์—์„œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

     

    ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž!

     

    ์—ฐ์‚ฐ์ž (Operator)๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐํ˜ธ๋กœ, +, -, *, / ๋“ฑ์„ ๋งํ•œ๋‹ค. 

    ํ”ผ์—ฐ์‚ฐ์ž (Operand)๋Š” ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž ์ˆ˜์— ๋”ฐ๋ผ์„œ ๋ถ„๋ฅ˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

     

    Unary Operator (๋‹จํ•ญ ์—ฐ์‚ฐ์ž)

    ํ”ผ์—ฐ์‚ฐ์ž ์ˆ˜๊ฐ€ 1๊ฐœ์ธ ๊ฒฝ์šฐ๋ฅผ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž (Unary Operator) ๋ผ๊ณ  ํ•œ๋‹ค.

    ์—ฐ์‚ฐ์ž์™€ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ณต๋ฐฑ ์—†์ด ๋ถ™์—ฌ์„œ ์จ์•ผํ•˜๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

    ์—ฌ๊ธฐ์„œ ํ”ผ์—ฐ์‚ฐ์ž ์œ„์น˜์— ๋”ฐ๋ผ์„œ ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ€๋ฅด๋Š” ์ด๋ฆ„์ด ๋‹ฌ๋ผ์ง€๋Š”๋ฐ,

     

    ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž ์•ž์— ์กด์žฌํ•  ๊ฒฝ์šฐ์—๋Š” Prefix Operator (๋‹จํ•ญ ์ „์น˜ ์—ฐ์‚ฐ์ž)

    ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž ๋’ค์— ์กด์žฌํ•  ๊ฒฝ์šฐ์—๋Š” Postfix Operator (๋‹จํ•ญ ํ›„์น˜ ์—ฐ์‚ฐ์ž)

    ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž ์‚ฌ์ด์— ์กด์žฌํ•  ๊ฒฝ์šฐ์—๋Š” Infix Operator (์ค‘์œ„ ์—ฐ์‚ฐ์ž) ๋ผ๊ณ  ํ•œ๋‹ค.

    Binary Operator (์ดํ•ญ ์—ฐ์‚ฐ์ž)

    ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 2๊ฐœ์ธ ๊ฒฝ์šฐ๋ฅผ ์ดํ•ญ ์—ฐ์‚ฐ์ž (Binary Operator) ๋ผ๊ณ  ํ•œ๋‹ค.

    ์—ฐ์‚ฐ์ž ์–‘ ์˜†์— ๋ฐ˜๋“œ์‹œ ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์น™์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋˜ํ•œ, ์ดํ•ญ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ™์€ ์ž๋ฃŒํ˜•๋ผ๋ฆฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

     

    ์ด ๋•Œ Int์™€ Int๋ฅผ ๋”ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์˜ ํƒ€์ž…์€ Int, Double๊ณผ Double์„ ๋”ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์˜ ํƒ€์ž…์€ Double์ด๋‹ค.

     

     

    ๊ทธ๋ ‡๋‹ค๋ฉด, ์ •์ˆ˜์™€ ์‹ค์ˆ˜๋ฅผ ๋”ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์˜ ํƒ€์ž…์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

     

     

    ์ •์ˆ˜์™€ ์‹ค์ˆ˜๋ฅผ ๋”ํ•˜๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์ด Double๋กœ ์ €์žฅ๋œ๋‹ค. 

     

    ๊ทธ๋ ‡๋‹ค๋ฉด Intํ˜•์˜ ์ƒ์ˆ˜์™€ Double ํ˜•์˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ ํ›„์—, ์ด ๋‘˜์„ ๋”ํ•  ๊ฒฝ์šฐ์—๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ๊นŒ? 

    Doubleํ˜•์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋ผ๋Š” ๋‚ด ์˜ˆ์ƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. 

     

     

    Int์™€ Double์€ ํƒ€์ž…์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋”ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค๊ณ  ํ•œ๋‹ค.

    ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์•ž์—์„œ 1๊ณผ 2.3์„ ๋”ํ–ˆ์„ ๋•Œ์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์„๊นŒ??

     

    ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด๋ณธ ๊ฒฐ๊ณผ!

    ์•ž์—์„œ๋Š” 1๊ณผ 2.3์— ๋Œ€ํ•ด์„œ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ’์˜ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ ์ ˆํ•œ ํƒ€์ž…์„ ์„ ํƒํ•ด์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์•ž์˜ 1๊ณผ 2.3์€ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ 1 (Double) + 2.3 (Double)๋กœ ๋ฐ›์•„๋“ค์—ฌ์ง„ ๊ฒƒ์ด๋‹ค.

     

    ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, a์™€ b๋ฅผ ๋”ํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” ํƒ€์ž…์ด ๋‹ค๋ฅธ ๋‘ ๊ฐ’์„ ๋”ํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด๋‹ค.

     

    ์ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Type Conversion์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

     

     

    Type Conversion์ด๋ž€, ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๊ฐ’์„ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    ํƒ€์ž…(ํ˜•๋ณ€ํ™˜ํ•  ๊ฐ’) ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์„ ํ•˜๋ฉฐ, Type Conversion์ด ์‹คํŒจํ•˜๋ฉด nil์ด ๋ฆฌํ„ด๋œ๋‹ค. 

     

     

    ๋งŒ์•ฝ Type Conversion์„ ํ•  ๋•Œ ๊ฐ’์„ ์ €์žฅํ•  ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

    Int8์€ Int๋ฅผ ์ €์žฅํ•˜๊ธฐ์—๋Š” ์ €์žฅ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

    ๋”ฐ๋ผ์„œ ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์— ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•œ๋‹ค!

     

     

     

    ์ฐธ๊ณ ๋กœ Int8, Int, UInt์˜ ๊ฐ’์˜ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์€ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™๋‹ค.

     

     

    ์ด์ œ a์™€ b๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด Type Conversion์„ ์‚ฌ์šฉํ•ด๋ณด์ž.

    2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, Doubleํ˜•์„ Int๋กœ ํ˜•๋ณ€ํ™˜ํ•˜์—ฌ Int + Int๋กœ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜, Int๋ฅผ Double๋กœ ํ˜•๋ณ€ํ™˜ํ•˜์—ฌ Double + Double๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

     

    Type Conversion์„ ํ•  ๊ฒฝ์šฐ, ์•„๋ฌด๋ž˜๋„ ๊ฐ’์˜ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Int๊ฐ€ ์•„๋‹Œ Double๋กœ ํ˜•๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!

     

    Comparison Operator (๋น„๊ต ์—ฐ์‚ฐ์ž)

    ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ๋ชจ๋‘ ์ดํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ทธ๋ ‡๊ธฐ ๋–„๋ฌธ์— ๊ฐ™์€ ์ž๋ฃŒํ˜•๋งŒ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ ๊ฐ’์€ ํ•ญ์ƒ boolean์ด๋‹ค.

    ==, !=, >, >=, <, <= ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

     

    Logical Operator (๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž)

    ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ, ๋ชจ๋“  ํ”ผ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ boolean์ด๋‹ค.

    Logical AND (&&)๋Š” ๋ชจ๋“  ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true์ธ ๊ฒฝ์šฐ์—๋งŒ true๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ๋Š” ๋ชจ๋‘ false๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

    Logical OR (||)๋Š” ๋ชจ๋“  ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false์ธ ๊ฒฝ์šฐ์—๋งŒ false๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ๋Š” ๋ชจ๋‘ true๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

    Logical NOT (!)์€ ํ”ผ์—ฐ์‚ฐ์ž ์•ž์— !๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์ธ๋ฐ, ๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. true๋ฅผ false๋กœ, false๋ฅผ true๋กœ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.

     

    Ternary Operator (์‚ผํ•ญ ์—ฐ์‚ฐ์ž / ์กฐ๊ฑด ์—ฐ์‚ฐ์ž)

    ํ”ผ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ์ž ์–‘ ์˜†์— ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์กฐ๊ฑด ? ๊ฒฐ๊ณผ1 : ๊ฒฐ๊ณผ2 ์™€ ๊ฐ™์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

    ์กฐ๊ฑด์„ ๊ธฐ์ค€์œผ๋กœ 2๊ฐœ์˜ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์กฐ๊ฑด์ด true๋ผ๋ฉด ๊ฒฐ๊ณผ1์„, false๋ผ๋ฉด ๊ฒฐ๊ณผ2๊ฐ€ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. 

    ์ด ๋•Œ, ์กฐ๊ฑด์€ ํ•ญ์ƒ boolean์ด๊ณ , ๊ฒฐ๊ณผ1, ๊ฒฐ๊ณผ2์˜ ์ž๋ฃŒํ˜•์€ ๋‹น์—ฐํžˆ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

     

    ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

     

     

    Assign Operator (ํ• ๋‹น ์—ฐ์‚ฐ์ž)

    ํ• ๋‹น ์—ฐ์‚ฐ์ž๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ’์„ ํ• ๋‹นํ•ด์ฃผ๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

    var ๋ณ€์ˆ˜์ด๋ฆ„ = ์ดˆ๊ธฐ๊ฐ’ ์—์„œ =๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ํ• ๋‹น ์—ฐ์‚ฐ์ž์˜ ๊ฒฐ๊ณผ๋Š” Void์ด๋‹ค. ์ฆ‰, ๊ฐ’์„ ๋ฆฌํ„ดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค.

    ์ถ”๊ฐ€์ ์œผ๋กœ +=, -=, *=, /= ์™€ ๊ฐ™์€ ๋ณตํ•ฉ ํ• ๋‹น ์—ฐ์‚ฐ์ž๋„ ์กด์žฌํ•œ๋‹ค.

    'Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Swift] Range Operator (๋ฒ”์œ„ ์—ฐ์‚ฐ์ž)  (0) 2022.01.09
    [Swift] ๋‹จ๋ฝ ํ‰๊ฐ€ (Short-circuit Evaluation)  (0) 2022.01.07
    [Swift] Type Inference, Type Annotation  (0) 2022.01.05
    [Swift] Scope  (0) 2022.01.04
    [Swift] ๊ธฐ๋ณธ ์šฉ์–ด ์ •๋ฆฌ  (0) 2022.01.03

    ๋Œ“๊ธ€

Designed by Tistory.