C# - ์—ฐ์‚ฐ์ž์™€ ๋ฐ•์‹ฑ

2020. 10. 6. 15:07ใ†์ „๊ณต ๊ณผ๋ชฉ/์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

C# - ์—ฐ์‚ฐ์ž์™€ ๋ฐ•์‹ฑ

 

์—ฐ์‚ฐ์ž์ค‘์—๋Š” ์‚ฐ์ˆ ์—ฐ์‚ฐ์ž, ๊ด€๊ณ„์—ฐ์‚ฐ์ž ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ์ด ์žฅ์—์„œ๋Š” ๋น„ํŠธ ์—ฐ์‚ฐ์ž, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž, ์ง€์ •์–ด ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

 

๋น„ํŠธ ์—ฐ์‚ฐ์ž

  • ๋น„ํŠธ ๋‹จ์œ„๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฐ์‚ฐ์ž
  • ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ฐ˜๋“œ์‹œ ์ •์ˆ˜ํ˜•
  • ์™ผ์ชฝ ์ด๋™(<<), ์˜ค๋ฅธ์ชฝ ์ด๋™(>>), 1์˜ ๋ณด์ˆ˜(~)

๋น„ํŠธ ์—ฐ์‚ฐ์ž์—๋Š” ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ๋…ผ๋ฆฌ๊ณฑ(%), ๋…ผ๋ฆฌํ•ฉ(|), ๋น„ํŠธ ๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ(^) ์ˆœ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

 

์ฆ‰ ๋…ผ๋ฆฌ๊ณฑ์ด ์ œ์ผ ์šฐ์„ ์‹œ ์ˆ˜ํ–‰๋œ๋‹ค.

 

ex)

class BitOperator{
  public static void main() {
    int x=9, y=3;
    Console.WriteLine(x + "&" + y +"=" + (x&y));
    Console.WriteLine(x + "^" + y +"=" + (x^y));
    Console.WriteLine("~10 = " + (~10));
    }
   }
   

 

๊ฒฐ๊ณผ ๊ฐ’ :

 9&3 = 1

 9^3  = 10

 ~10   = -11

 

๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” 2๋น„ํŠธ๋กœ ๋ฐ”๊พผ๋’ค ๊ณ„์‚ฐํ•˜๊ณ  10์ง„์ˆ˜๋กœ ์ถœ๋ ฅ๊ฐ’์„ ๋‚ด๋†“๋Š”๋‹ค.

9๋Š” 1001์ด๊ณ , 3์€ 0011์ด๋‹ค. ์ด์˜ ๋…ผ๋ฆฌ๊ณฑ(&)์„ ํ•œ๋‹ค๋ฉด 0001์ด ๋˜๊ณ  10์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด 1์ด ๋œ๋‹ค. 

 

 

์กฐ๊ฑด ์—ฐ์‚ฐ์ž       

  • if๋ฌธ์žฅ๊ณผ ๊ฐ™์€ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž
  • ํ˜•ํƒœ : max = x > y ? x: y;

x๊ฐ€ y๋ณด๋‹ค ํฌ๋‹ค๋ฉด x๋ฅผ max์— ์ €์žฅํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด y์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

ex)

class Operator {
  public static void main() {
    int a, b, c;
    int m;
    Console.Write("Enter Three number :");
    a = Console.Read() - '0';
    b = Console.Read() - '0';
    c = Console.Read() - '0';
    m = (a>b) ? a: b;
    m = (m>c) ? m : c;
    Console.WriteLine("The largest number = " +m);
    }
  }
  

Console.Read()๋Š” ์ž…๋ ฅํ•จ์ˆ˜์ด๋‹ค. '0'์„ ๋นผ์ฃผ๋Š” ์ด์œ ๋Š” ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ๋ฌธ์ž๋กœ ์ž…๋ ฅ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์•„์Šคํ‚ค์ฝ”๋“œ๋ผ๋ฆฌ ๋นผ์ค€๋‹ค๋ฉด ์‹ค์ œ ์ˆซ์ž๊ฐ€ ๋‚จ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์œ„์˜ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด m๊ฐ’์ด ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์ €์žฅ๋  ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์ง€์ •์–ด ์—ฐ์‚ฐ์ž

  • ์—ฐ์‚ฐ์˜ ์˜๋ฏธ๋ฅผ C# ์ง€์ •์–ด๋กœ ๋‚˜ํƒ€๋‚ธ ์—ฐ์‚ฐ์ž

์ฆ‰ is๋‚˜ as๊ฐ™์€ C#์ง€์ •์–ด๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋ฐ”๋กœ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์ž.

 

ex)

public class Operator{
  static void IsOperator(object obj) {
    Console.WriteLine(obj + "is int :" + (obj is int));
    Console.WriteLine(obj + "is string: " + (obj is string));
    }
  static void AsOperator(object obj) {
    Console.WriteLine(obj + "as string == null :" + (obj as string == null));
    }
    public static void Main() {
      IsOperator(10);
      IsOperator("ABC");
      AsOpertaor(10);
      AsOperator("ABC);
      }
    }

is๋‚˜ as๋Š” boolํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.

10์€ int๊ฐ€ ๋งž์œผ๋ฏ€๋กœ True๊ฐ€ string์€ ์•„๋‹ˆ๋ฏ€๋กœ False๊ฐ€ ๋‚˜์˜จ๋‹ค.

ABC๋„ ์œ„์™€ ๊ฐ™์ด int๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ False string์€ ์•„๋‹ˆ๋ฏ€๋กœ True๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

๋ฌธ์ œ๋Š” as์ด๋‹ค.

10์€ stringํด๋ž˜์Šค ๊ฐ์ฒด๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— nullํ–ˆ์„ ๋•Œ True๊ฐ€ ๋งž๋‹ค. 10์€ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๊ทธ์ € "๊ฐ’"์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ "ABC"๋Š” ""๊ฐ€ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ๋ฌธ์ž์—ด์ด ๋˜๊ณ , ์ด๋Š” stringํด๋ž˜์Šค ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค. ์ฆ‰ null๊ฐ’์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— False๊ฐ€ ๋œ๋‹ค.

 

๋ฐ•์‹ฑ๊ณผ ์–ธ๋ฐ•์‹ฑ

๋ฐ•์‹ฑ

  • ๊ฐ’ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ
  • ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ฌต์‹œ์ ์œผ๋กœ ํ–‰ํ•ด์ง

์–ธ๋ฐ•์‹ฑ

  • ์ฐธ์กฐํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ’ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ
  • ๋ฐ˜๋“œ์‹œ ์บ์ŠคํŒ…์„ ํ†ตํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ํ–‰ํ•ด์ง
  • ๋ฐ˜๋“œ์‹œ ๋ฐ•์‹ฑ๋  ๋•Œ ํ˜•์œผ๋กœ ์–ธ๋ฐ•์‹ฑ์„ ํ•ด์ฃผ์–ด์•ผ ํ•จ.

ex)

class Boxing{
  public static void Main() {
    int foo = 526;
    object bar = foo; //๋ฐ•์‹ฑ
    Console.WriteLine(bar);
    try{
       double d = (short)bar; //์›๋ž˜ ๊ฐ’ํ˜•์˜ ์ž๋ฃŒํ˜• x --> ์˜ค๋ฅ˜
       Console.WriteLine(d);
      }catch (InvalidCastException e) {
          Console.WriteLine(e + "Error");
          }
        }
      }
      

์‹คํ–‰ ๊ฒฐ๊ณผ:

526

System.InvalidCastException:

at Boxing.Main() Error

 

์–ธ๋ฐ•์‹ฑ์„ ํ•  ๋•Œ์—๋Š” ๋ฐ•์‹ฑ๋  ๋•Œ ํ˜•์œผ๋กœ ์–ธ๋ฐ•์‹ฑ์„ ํ•ด์ฃผ์–ด์•ผ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.