๐งฑ 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์ง์๋ฅผ 16์ง์๋ก ๋ณํ๋ฒ
๐พ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ๋ฐฉ์
- ์ด๋ค ์ง๋ฒ์ผ๋ก ์์ฑํด๋, ์ค์ ๋ก๋ ์ปดํจํฐ๊ฐ ๋ชจ๋ 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๊ฐ ์์์ ์ด๊ฑฐํ๊น์ง
'C# > ๊ธฐ๋ณธ ๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| C# ๋ฉ๋ชจ๋ฆฌ ์์ญ (0) | 2025.11.01 |
|---|---|
| C# ๊ฐ์ฒด ์งํฅ ์์ ๋ฐ ๋ณต์ฌ์ ๊ฐ ์ฐธ์กฐ (0) | 2025.11.01 |
| C# TextRPG (0) | 2025.11.01 |
| C# ๊ฐ๋จํ ์ฐ์ต๋ฌธ์ (0) | 2025.10.27 |
| C# ๊ธฐ์ด ๋ฌธ๋ฒ ์ ๋ฆฌ - ํจ์ (0) | 2025.10.27 |