๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

C#/๊ธฐ๋ณธ ๋ฌธ๋ฒ•

C# ๊ธฐ์ดˆ ๋ฌธ๋ฒ• ์ •๋ฆฌ — ๋ณ€์ˆ˜, ์ง„๋ฒ•, ํ˜•๋ณ€ํ™˜, ์ƒ์ˆ˜, ์—ด๊ฑฐํ˜•, if๋ฌธ, switch

๐Ÿงฑ 1. ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• (Primitive Types)

์ž๋ฃŒํ˜• ์˜๋ฏธ ๋น„๊ณ 
int ์ •์ˆ˜ํ˜• 4byte
float ์‹ค์ˆ˜ํ˜• 4byte, f ์ ‘๋ฏธ์‚ฌ ํ•„์š”
double ๋” ์ •๋ฐ€ํ•œ ์‹ค์ˆ˜ํ˜• 8byte
string ๋ฌธ์ž์—ด ํด๋ž˜์Šค ํƒ€์ž…
char ๋ฌธ์žํ˜• 2byte (์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜)
bool ๋…ผ๋ฆฌํ˜• true / false ๊ฐ’

 

๐Ÿ“Œ char๋Š” C++๊ณผ ๋‹ฌ๋ฆฌ 2๋ฐ”์ดํŠธ ํฌ๊ธฐ์ด๋ฉฐ, ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ข 2. ์ง„๋ฒ• ํ‘œํ˜„ (Binary, Decimal, Hex)

์ง„๋ฒ•๋ช… ํ‘œํ˜„ ๋ฒ”์œ„ ์˜ˆ์‹œ ๊ฐ’ ์ ‘๋‘์‚ฌ ์„ค๋ช…
10์ง„๋ฒ• (Decimal) 0~9 100 ์—†์Œ ์šฐ๋ฆฌ๊ฐ€ ์ผ์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ง„๋ฒ•
2์ง„๋ฒ• (Binary) 0, 1 0b01100100 0b ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ง„๋ฒ•
16์ง„๋ฒ• (Hexadecimal) 0~9, A~F 0x64 0x 2์ง„๋ฒ•์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ ๊ฐ€๋Šฅ (4๋น„ํŠธ = 1ํ—ฅ์‚ฌ์ž๋ฆฌ)

๐Ÿ’ก ์˜ˆ์‹œ

  • 10์ง„์ˆ˜ 100
    → 2์ง„์ˆ˜ 0b01100100
    → 16์ง„์ˆ˜ 0x64
    • 2์ง„์ˆ˜๋ฅผ 16์ง„์ˆ˜๋กœ ๋ณ€ํ™˜๋ฒ•
      • ex) 0100 0110
      • => 0110 : 6, 0100 : 4
      • 16์ง„์ˆ˜๋กœ 64๊ฐ€ ๋จ

๐Ÿ’พ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ๋ฐฉ์‹

  • ์–ด๋–ค ์ง„๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•ด๋„, ์‹ค์ œ๋กœ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ๋ชจ๋‘ 2์ง„์ˆ˜๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ฆ‰, int hp10 = 100;, int hp16 = 0x64;, int hp2 = 0b01100100;
    → ์„ธ ๋ณ€์ˆ˜ ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ’(100) ์„ ์ €์žฅ.

โš™๏ธ 2์˜ ๋ณด์ˆ˜ (Two’s Complement)

๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 8๋น„ํŠธ ๊ธฐ์ค€:

2์ง„์ˆ˜ 10์ง„์ˆ˜ ๊ฐ’ ์„ค๋ช…
0111 1111 127 ์ตœ๋Œ€ ์–‘์ˆ˜
1111 1111 -1 ๋ชจ๋“  ๋น„ํŠธ : -1
1000 0000 -128 ์ตœ์†Œ ์Œ์ˆ˜
1000 0001 -127 -128 + 1

โœ… ์ •๋ฆฌ

  • ๋งจ ์•ž ๋น„ํŠธ(MSB)๋Š” ๋ถ€ํ˜ธ ๋น„ํŠธ
    • 0 → ์–‘์ˆ˜
    • 1 → ์Œ์ˆ˜
  • ํ‘œํ˜„ ๋ฒ”์œ„ (8๋น„ํŠธ ๊ธฐ์ค€): -128 ~ +127

 

๐Ÿงฑ ์ž๋ฃŒํ˜• ์˜ˆ์‹œ

ํƒ€์ž… ํฌ๊ธฐ ๋ถ€ํ˜ธ ํ‘œํ˜„ ๋ฒ”์œ„
sbyte 8๋น„ํŠธ ์žˆ์Œ -128 ~ 127
byte 8๋น„ํŠธ ์—†์Œ 0 ~ 255
int 32๋น„ํŠธ ์žˆ์Œ -2,147,483,648 ~ 2,147,483,647
uint 32๋น„ํŠธ ์—†์Œ 0 ~ 4,294,967,295
  • ๋ถ€ํ˜ธ ๋น„ํŠธ(Sign Bit) : ๋งจ ์•ž ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด ์Œ์ˆ˜
  • 2์˜ ๋ณด์ˆ˜๋ฅผ ์ด์šฉํ•ด ์Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • 1111 1111 → -1
    • 1000 0000 → -128

๐Ÿ”„ 4. ํ˜•๋ณ€ํ™˜ (Casting)

๊ตฌ๋ถ„ ์˜ˆ์‹œ ์„ค๋ช…
์•”์‹œ์  ํ˜•๋ณ€ํ™˜ float b = a; ์ž‘์€ → ํฐ ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜
๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜ short s = (short)a; ํฐ → ์ž‘์€ ํƒ€์ž…, ๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ
๋ฌธ์ž์—ด → ์ˆซ์ž int.Parse("123") / Convert.ToInt32(...) string์„ int๋กœ ๋ณ€ํ™˜
์ˆซ์ž → ๋ฌธ์ž์—ด $"{hp}/{maxHp}" ๋ฌธ์ž์—ด ๋ณด๊ฐ„(String Interpolation) ์‚ฌ์šฉ

 

๐Ÿ’ก ๋ฌธ์ž์—ด ๋ณด๊ฐ„๋ฒ• $"{๋ณ€์ˆ˜}" ์€ string.Format๋ณด๋‹ค ํ›จ์”ฌ ์ง๊ด€์ ์ด๋ผ C# ์ตœ์‹  ๋ฌธ๋ฒ•์—์„œ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.


โž• 5. ์—ฐ์‚ฐ์ž (Operators)

์ข…๋ฅ˜ ์—ฐ์‚ฐ์ž ์„ค๋ช…
์‚ฐ์ˆ  +, -, *, /, % ๊ธฐ๋ณธ ์ˆ˜ํ•™ ์—ฐ์‚ฐ
๋Œ€์ž… +=, -=, *=, /= ๋ˆ„์  ์—ฐ์‚ฐ
์ฆ๊ฐ ++, -- 1์”ฉ ์ฆ๊ฐ€/๊ฐ์†Œ
๋น„๊ต <, >, <=, >=, ==, != ์ฐธ/๊ฑฐ์ง“ ๊ฒฐ๊ณผ
๋…ผ๋ฆฌ &&, `  
์‚ผํ•ญ ์กฐ๊ฑด ? A : B ๊ฐ„๋‹จํ•œ if๋ฌธ ๋Œ€์ฒด

 

๐Ÿ“˜ a++ vs ++a

  • a++ : ๋จผ์ € ์‚ฌ์šฉ ํ›„ 1 ์ฆ๊ฐ€
  • ++a : 1 ์ฆ๊ฐ€ ํ›„ ์‚ฌ์šฉ

๐Ÿง  6. ์กฐ๊ฑด๋ฌธ (if / switch)

๐Ÿ”ธ if๋ฌธ

if (level > 5)
    Console.WriteLine("๋˜์ „์— ์ž…์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.");
else
    Console.WriteLine("๋ ˆ๋ฒจ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.");

๐Ÿ”ธ switch๋ฌธ

switch(choice)
{
    case 0: Console.WriteLine("๊ฐ€์œ„"); break;
    case 1: Console.WriteLine("๋ฐ”์œ„"); break;
    case 2: Console.WriteLine("๋ณด"); break;
}
  • ๋ถ„๊ธฐ๊ฐ€ ๋‹จ์ˆœํ•  ๋• switch,
  • ์กฐ๊ฑด์ด ๋ณต์žกํ•˜๋ฉด if๋ฌธ์ด ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’Ž 7. ์ƒ์ˆ˜์™€ enum

โœ… ์ƒ์ˆ˜ (const)

const int ROCK = 1;

โœ… ์—ด๊ฑฐํ˜• (enum)

enum Choice
{
    Scissors = 0,
    Rock = 1,
    Paper = 2
}

 

→ ์ด๋ฆ„์„ ๋ถ™์—ฌ์„œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค.

ํ™•์žฅ์„ฑ์—๋„ ์šฉ์ด


๐ŸŽฒ 8. Random ํด๋ž˜์Šค

Random rand = new Random();
int aiChoice = rand.Next(0, 3); // 0, 1, 2 ์ค‘ ํ•˜๋‚˜
  • Next(min, max) : ์ตœ์†Œ๊ฐ’ ์ด์ƒ, ์ตœ๋Œ€๊ฐ’ ๋ฏธ๋งŒ
  • ๊ฒŒ์ž„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋“ฑ์— ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿชจโœ‚๏ธ๐Ÿ“„ 9. ๊ฐ€์œ„๋ฐ”์œ„๋ณด ๊ฒŒ์ž„ ์˜ˆ์ œ

using System;

namespace Rookiss_CSharp
{
    class Program
    {
        enum Choice
        {
            Scissors = 0,
            Rock = 1,
            Paper = 2
        }

        static void Main(string[] args)
        {
            Console.WriteLine("๊ฐ€์œ„(0), ๋ฐ”์œ„(1), ๋ณด(2) ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”: ");
            int choice = Convert.ToInt32(Console.ReadLine());

            Random rand = new Random();
            int aiChoice = rand.Next(0, 3);

            switch (choice)
            {
                case (int)Choice.Scissors:
                    Console.WriteLine("๋‹น์‹ ์˜ ์„ ํƒ์€ ๊ฐ€์œ„์ž…๋‹ˆ๋‹ค.");
                    break;
                case (int)Choice.Rock:
                    Console.WriteLine("๋‹น์‹ ์˜ ์„ ํƒ์€ ๋ฐ”์œ„์ž…๋‹ˆ๋‹ค.");
                    break;
                case (int)Choice.Paper:
                    Console.WriteLine("๋‹น์‹ ์˜ ์„ ํƒ์€ ๋ณด์ž…๋‹ˆ๋‹ค.");
                    break;
            }

            switch (aiChoice)
            {
                case (int)Choice.Scissors:
                    Console.WriteLine("์ปดํ“จํ„ฐ์˜ ์„ ํƒ์€ ๊ฐ€์œ„์ž…๋‹ˆ๋‹ค.");
                    break;
                case (int)Choice.Rock:
                    Console.WriteLine("์ปดํ“จํ„ฐ์˜ ์„ ํƒ์€ ๋ฐ”์œ„์ž…๋‹ˆ๋‹ค.");
                    break;
                case (int)Choice.Paper:
                    Console.WriteLine("์ปดํ“จํ„ฐ์˜ ์„ ํƒ์€ ๋ณด์ž…๋‹ˆ๋‹ค.");
                    break;
            }

            if (choice == aiChoice)
            {
                Console.WriteLine("๋ฌด์Šน๋ถ€์ž…๋‹ˆ๋‹ค.");
            }
            else if (choice == 0 && aiChoice == 2) // ๊ฐ€์œ„ && ๋ณด
            {
                Console.WriteLine("์Šน๋ฆฌ์ž…๋‹ˆ๋‹ค.");
            }
            else if (choice == 1 && aiChoice == 0) // ๋ฐ”์œ„ && ๊ฐ€์œ„
            {
                Console.WriteLine("์Šน๋ฆฌ์ž…๋‹ˆ๋‹ค.");
            }
            else if (choice == 3 && aiChoice == 1) // ๋ณด && ๋ฐ”์œ„
            {
                Console.WriteLine("์Šน๋ฆฌ์ž…๋‹ˆ๋‹ค.");
            }
            else
            {
                Console.WriteLine("ํŒจ๋ฐฐ์ž…๋‹ˆ๋‹ค.");
            }
        }
    }
}

 

 

๐Ÿงฉ 10. Visual Studio ๋‹จ์ถ•ํ‚ค

๊ธฐ๋Šฅ ๋‹จ์ถ•ํ‚ค ์„ค๋ช…
cw + Tab Console.WriteLine() ์ž๋™์™„์„ฑ  
Ctrl + K + C ์„ ํƒ ์˜์—ญ ์ฃผ์„ ์ฒ˜๋ฆฌ  
Ctrl + K + U ์„ ํƒ ์˜์—ญ ์ฃผ์„ ํ•ด์ œ  

 

 

 

์ •๋ฆฌ๋ณธ

์ถœ์ฒ˜: https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1

 

[C#๊ณผ ์œ ๋‹ˆํ‹ฐ๋กœ ๋งŒ๋“œ๋Š” MMORPG ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์‹œ๋ฆฌ์ฆˆ] Part1: C# ๊ธฐ์ดˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ| Rookiss - ์ธํ”„๋Ÿฐ ๊ฐ•

ํ˜„์žฌ ํ‰์  4.9์  ์ˆ˜๊ฐ•์ƒ 6,977๋ช…์ธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”. ๊ธฐ์ดˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์‹์ด ์—†๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๋ฌธ๋ฒ• ์•”๊ธฐ ์œ„์ฃผ์˜ ์ˆ˜์—…์ด ์•„๋‹ˆ๋ผ, ์ตœ๋Œ€ํ•œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ์„ ์š”

www.inflearn.com

1 ~ 22๊ฐ• ์ƒ์ˆ˜์™€ ์—ด๊ฑฐํ˜•๊นŒ์ง€