전체 코드

namespace CSharpGrammar
{
    class Program
    {
       

        static void Main(string[] args)
        {
            // 산술 연산
            // 데이터 가공을 해야한다.
            // ex) 몬스터와 전투로 -hp or 회복 + hp
            // 데이터 가공에 대해서 알아보는데 산술연산에 대해서 알아봄
            // 계산기
            // 사칙연산

            // +,-,*,/,%

            //int hp = (3 + 2) * 10; // = 23;

            // 우선순위
            // 괄호를 사요용해서 우선순위를 정해줌

            //Console.WriteLine(hp);

            int hp = 100;

            int value = 5;
            //hp = hp - 5; // 95

            hp = hp + value; // 105
            // 1) 할당        int hp;
            // 2) write       hp = 100;
            // 3) read        hp

            // 몫과 나머지

            //int a = 10 / 3;
            //int b = 10 % 3;
            // 몫 3, 나머지 1
            // 3.333333
            // 정수이냐, 실수까지 이냐

            // a = 3 , b = 1

            // 짝수 , 홀수

            // 짝수
            int n = 100;
            // n % 2 == 0 // 짝수
            // n % 2 == 1 // 홀수

            // 축약형

            int a = 10;
            a += 5;  // a = a + 5 → 15
            a -= 3;  // a = a - 3 → 12
            a *= 2;  // a = a * 2 → 24
            a /= 4;  // a = a / 4 → 6

            // 증감 연산자
            a = a + 1;
            a += 1;
            a++;
            ++a;

            --a;
            a--;

            a = 10;
            

            // 후위 :
            Console.WriteLine(a++); // 10 원본을 사용하고 1을 증가 우선순위가 낮음

            // 전위 : 
            Console.WriteLine(++a); // 11 먼저 1증가 시킴 우선순위가 높음
        }
    }
}

1. 산술 연산(Arithmetic Operations) 개요

C#에서 산술 연산(Arithmetic Operations)수학적 연산을 수행하는 기본적인 기능입니다.
게임 개발에서는 체력(HP) 변화, 점수 계산, 아이템 개수 조정, 이동 속도 계산 등 다양한 곳에서 사용됩니다.

✅ C#의 주요 산술 연산자

연산자설명예제결과
+덧셈(Addition)5 + 38
-뺄셈(Subtraction)5 - 32
*곱셈(Multiplication)5 * 315
/나눗셈(Division)10 / 33 (정수 나눗셈)
%나머지(Modulus)10 % 31

2. 산술 연산 우선순위(Precedence)

C#에서는 연산자 우선순위에 따라 계산이 수행됩니다.

✅ 연산자 우선순위

  1. () 괄호 (최우선)
  2. *, /, % 곱셈, 나눗셈, 나머지
  3. +, - 덧셈, 뺄셈
int result = 3 + 2 * 10;  // 3 + (2 * 10) → 3 + 20 → 23
Console.WriteLine(result);
int result = (3 + 2) * 10;  // (3 + 2) → 5 * 10 → 50
Console.WriteLine(result);

📌 () 괄호를 사용하면 연산 순서를 명확하게 제어 가능!


3. 산술 연산 실전 예제

✅ 체력 계산 (HP 증가 및 감소)

int hp = 100;
int damage = 25;
hp -= damage;  // 100 - 25 = 75
Console.WriteLine($"현재 체력: {hp}");

📌 hp -= damage;hp = hp - damage;와 동일한 표현.


✅ 나눗셈과 나머지 연산

int a = 10 / 3;  // 몫: 3 (정수 나눗셈)
int b = 10 % 3;  // 나머지: 1
Console.WriteLine($"몫: {a}, 나머지: {b}");

📌 정수 나눗셈은 소수점을 버리고 몫만 반환.


4. 나누기 연산에서 주의할 점

int x = 10;
int y = 0;
int result = x / y;  // ❌ 런타임 오류 (DivideByZeroException)

📌 0으로 나누기 오류 발생!

  • 정수를 0으로 나누면 DivideByZeroException 예외가 발생.
  • try-catch 문을 사용하여 예외를 방지해야 함.
try
{
    int result = x / y;
}
catch (DivideByZeroException)
{
    Console.WriteLine("0으로 나눌 수 없습니다.");
}

5. 증감 연산자 (Increment & Decrement)

증감 연산자는 변수 값을 1 증가 또는 감소시키는 연산자입니다.

연산자설명예제
++a전위 증가 연산자: 먼저 증가 후 사용int b = ++a;
a++후위 증가 연산자: 먼저 사용 후 증가int b = a++;
--a전위 감소 연산자: 먼저 감소 후 사용int b = --a;
a--후위 감소 연산자: 먼저 사용 후 감소int b = a--;

✅ 전위 증가 연산 (++a)

int a = 10;
int b = ++a;  // a를 먼저 증가시킨 후, b에 할당
Console.WriteLine($"a: {a}, b: {b}");  // a: 11, b: 11

📌 ++a변수를 먼저 증가시키고, 증가된 값을 사용.


✅ 후위 증가 연산 (a++)

int a = 10;
int b = a++;  // b에 a를 먼저 할당한 후, a를 증가시킴
Console.WriteLine($"a: {a}, b: {b}");  // a: 11, b: 10

📌 a++변수를 먼저 사용한 후, 증가됨.


6. 축약형 연산자 (Compound Assignment Operators)

연산자의미예제
+=덧셈 후 할당a += 5; (→ a = a + 5;)
-=뺄셈 후 할당a -= 5; (→ a = a - 5;)
*=곱셈 후 할당a *= 2; (→ a = a * 2;)
/=나눗셈 후 할당a /= 2; (→ a = a / 2;)
%=나머지 연산 후 할당a %= 2; (→ a = a % 2;)

✅ 예제

int a = 10;
a += 5;  // a = a + 5 → 15
a -= 3;  // a = a - 3 → 12
a *= 2;  // a = a * 2 → 24
a /= 4;  // a = a / 4 → 6
Console.WriteLine($"최종 결과: {a}");  // 최종 결과: 6

📌 축약형 연산자는 코드 가독성을 높이고, 연산을 간결하게 만듦!


7. 산술 연산과 실수형(Float, Double)

정수형(int)과 실수형(float, double)의 연산 결과는 다릅니다.

int intDiv = 10 / 3;   // 정수 나눗셈 (결과: 3)
double doubleDiv = 10.0 / 3;  // 실수 나눗셈 (결과: 3.3333...)
Console.WriteLine($"정수 나눗셈: {intDiv}, 실수 나눗셈: {doubleDiv}");

📌 정수 나눗셈은 소수점을 버리고 몫만 반환하지만,
📌 실수 나눗셈은 정확한 값을 반환.


profile
李家네_공부방

0개의 댓글