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증가 시킴 우선순위가 높음
}
}
}
C#에서 산술 연산(Arithmetic Operations)은 수학적 연산을 수행하는 기본적인 기능입니다.
게임 개발에서는 체력(HP) 변화, 점수 계산, 아이템 개수 조정, 이동 속도 계산 등 다양한 곳에서 사용됩니다.
| 연산자 | 설명 | 예제 | 결과 |
|---|---|---|---|
+ | 덧셈(Addition) | 5 + 3 | 8 |
- | 뺄셈(Subtraction) | 5 - 3 | 2 |
* | 곱셈(Multiplication) | 5 * 3 | 15 |
/ | 나눗셈(Division) | 10 / 3 | 3 (정수 나눗셈) |
% | 나머지(Modulus) | 10 % 3 | 1 |
C#에서는 연산자 우선순위에 따라 계산이 수행됩니다.
() 괄호 (최우선)*, /, % 곱셈, 나눗셈, 나머지+, - 덧셈, 뺄셈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);
📌 () 괄호를 사용하면 연산 순서를 명확하게 제어 가능!
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}");
📌 정수 나눗셈은 소수점을 버리고 몫만 반환.
int x = 10;
int y = 0;
int result = x / y; // ❌ 런타임 오류 (DivideByZeroException)
📌 0으로 나누기 오류 발생!
try-catch 문을 사용하여 예외를 방지해야 함.try
{
int result = x / y;
}
catch (DivideByZeroException)
{
Console.WriteLine("0으로 나눌 수 없습니다.");
}
증감 연산자는 변수 값을 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++는 변수를 먼저 사용한 후, 증가됨.
| 연산자 | 의미 | 예제 |
|---|---|---|
+= | 덧셈 후 할당 | 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
📌 축약형 연산자는 코드 가독성을 높이고, 연산을 간결하게 만듦!
정수형(int)과 실수형(float, double)의 연산 결과는 다릅니다.
int intDiv = 10 / 3; // 정수 나눗셈 (결과: 3)
double doubleDiv = 10.0 / 3; // 실수 나눗셈 (결과: 3.3333...)
Console.WriteLine($"정수 나눗셈: {intDiv}, 실수 나눗셈: {doubleDiv}");
📌 정수 나눗셈은 소수점을 버리고 몫만 반환하지만,
📌 실수 나눗셈은 정확한 값을 반환.