0309 연산자
2021. 3. 9. 13:24ㆍC#/수업내용
- 산술 연산자 : + - / * %(나머지) = 홀수나 짝수 구할 때 많이 사용
- / 할 때 소수점으로 나올 경우 소수점 아래는 버림.
- 단항: ++ --
static void Main(string[] args)
{
int a = 33;
int b = 8;
Console.WriteLine(a + b);
Console.WriteLine(a - b);
Console.WriteLine(a * b);
Console.WriteLine(a / b);
Console.WriteLine(a % b);
}
- 복합 할당식
static void Main(string[] args)
{
int a = 5;
a += 9;
Console.WriteLine(a); // a=a+9
a -= 4;
Console.WriteLine(a); // a=a-4
a *= 2;
Console.WriteLine(a); // a=a*2
a /= 4;
Console.WriteLine(a); // a=a/4
a %= 3;
Console.WriteLine(a); // a=a%3
예시)
static void Main(string[] args)
{
string marine = "marine";
int marineDamage = 1;
string hydra = "hydra";
int hydraHp = 10;
//marine이 hydra를 공격했습니다. -1
//hydra hp: 9
Console.WriteLine("marine이 hydra를 공격했습니다. -1");
Console.WriteLine("hydra hp: {0}", hydraHp - marineDamage);
}
string marine = "marine";
int marineDamage = 1;
string hydra = "hydra";
int hydraMaxHp = 10;
int hydraHp = hydraMaxHp;
//marine이 hydra를 공격했습니다. -1
//hydra hp: 9/10 (90%)
Console.WriteLine("marine이 hydra를 공격했습니다. -1");
hydraHp -= marineDamage;
Console.WriteLine("hydra hp: {0}/{1} {2}%", hydraHp,hydraMaxHp,hydraHp*100/10);
- 증가 감소 연산자
- ++변수(전의) : 변수의 값을 1증가 시키고 변수 값 출력
- 변수++(후의): 변수 값을 출력하고 변수 값을 1증가
static void Main(string[] args)
{
int level = 1;
string name = "홍길동";
//홍길동 님이 레벨업을 했습니다. +1
//홍길동 님이 레벨 2가 되었습니다.
Console.WriteLine("{0} 님이 레벨업을 했습니다. +{1}", name, level);
level ++;
Console.WriteLine("{0} 님이 레벨 {1}가 되었습니다.", name, level);
int reinforce = 3;
string weaponName = "장검";
//장검+3
//강화시도
//강화실패
//장검+2
Console.WriteLine("{0}+{1}", weaponName, reinforce);
Console.WriteLine("강화 시도");
reinforce--;
Console.WriteLine("강화 실패");
Console.WriteLine("{0}+{1}", weaponName, reinforce);
}
- Modulo operation
- 어떤 수를 3으로 나누면 나머지 값은 0,1,2밖에 나오지 않는다.
- 나머지 연산자를 사용하여 어떤 값을 원하는 범위 내 다른 값으로 바꿀 수 있다.
static void Main(string[] args)
{
Random rand = new Random();
int num = rand.Next(0, 101);
Console.WriteLine(num);
Console.WriteLine(num % 3);
num = rand.Next(0, 101);
Console.WriteLine(num);
Console.WriteLine(num % 3);
}
- bool 타입 연산자
static void Main(string[] args)
{
int a = 50, b = 60;
Console.WriteLine(a < b); //50<60, True
Console.WriteLine(a > b); //50>60, False
Console.WriteLine(a == b); //50==60, False 같다
Console.WriteLine(a != b); //50!=60, True 같지 않다.
Console.WriteLine(a >= b); //50>=60, False
Console.WriteLine(a <= b); //50<=60, True
}
static void Main(string[] args)
{
string heroName = "홍길동";
int heroMaxHp = 10;
int heroHp = heroMaxHp;
int heroDamage = 3;
string monsterName = "고블린";
float monsterDamage = 2.5f;
int monsterMaxHp = 2;
int monsterHp = monsterMaxHp;
//홍길동이 고블린으로부터 피해(-2.5)를 받았습니다. (7.5/10) 75%
//고블린이 홍길등으로부터 피해 (-3)를 받았습니다. (-1/2)
//고블린 생존 여부:True
Console.Write("{0}이 {1}으로부터 피해(-{2})를 받았습니다. ({3}/{4})", heroName, monsterName, monsterDamage, heroMaxHp - monsterDamage,heroMaxHp);
float heroCurrentHp = (heroMaxHp-monsterDamage)*100f/10f;
Console.WriteLine("{0}%",heroCurrentHp);
Console.WriteLine("{0}이 {1}으로부터 피해(-{2})를 받았습니다. ({3}/{4})", heroName, monsterName, heroDamage, monsterMaxHp - heroDamage, monsterMaxHp);
bool monsterCurrentHp = 0 >= monsterHp;
Console.WriteLine("고블린 생존 여부: {0}", monsterCurrentHp);
}
static void Main(string[] args)
{
string heroName = "홍길동";
int heroMaxHp = 10;
float heroHp = heroMaxHp;
int heroDamage = 3;
string monsterName = "고블린";
float monsterDamage = 2.5f;
int monsterMaxHp = 2;
int monsterHp = monsterMaxHp;
//홍길동이 고블린으로부터 피해(-2.5)를 받았습니다. (7.5/10) 75%
//고블린이 홍길동으로부터 피해(-3)를 받았습니다. (0/2) 0%
//고블린 생존여부 : False
heroHp -= monsterDamage;
Console.WriteLine("{0}이 {1}으로부터 피해(-{2})를 받았습니다. ({3}/{4}) {5}%", heroName, monsterName, monsterDamage, heroHp, heroMaxHp, (float)heroHp / heroMaxHp * 100f);
monsterHp -= heroDamage;
Console.WriteLine("{0}이 {1}으로부터 피해(-{2})를 받았습니다. ({3}/{4})", monsterName, heroName, heroDamage, monsterHp, monsterMaxHp);
bool isMonsterDie = monsterHp <= 0;
Console.WriteLine("몬스터 생존여부: {0}", isMonsterDie);
}
- bool 논리 연산자
- !(논리부정) &(논리 AND) |(논리 OR) ^(xOR) : 이진연산
- && (조건부 AND) ||(조건부 논리 OR)
- && 둘 다 참일 때 참
- || 둘 중에 하나만 참일 때 참
- ! 참과 거짓의 값을 반대로 돌려버림
- && 예시
static void Main(string[] args)
{
//AND 논리 연산자 && 모두 True면 결과 값은 Ture
//하나라도 False면 False
string heroName = "홍길동";
float sight = 5.4f;
float attackRange = 3.3f;
float heroX = 0;
float heroY = 0;
string monsterName = "고블린";
float monsterX = 4f;
float monsterY = 3f;
double a = Math.Pow(monsterX - heroX, 2);
double b = Math.Pow(monsterY - heroY, 2);
double distance = Math.Sqrt(a + b);
Console.WriteLine(distance);
Console.WriteLine(distance <= sight); //True
Console.WriteLine(distance <= attackRange); //False
bool isAttackPossible = (distance <= sight) && (distance <= attackRange);
Console.WriteLine(isAttackPossible);
//홍길동이 고블린을 공격할 수 있는 상태인가? : False
Console.WriteLine("{0}이 {1}을 공격할 수 있는 상태인가? : {2}", heroName, monsterName, isAttackPossible);
}
- || 예시
//|| OR 둘 중에 하나만 Ture 경우 Ture 값 내놓음
string heroName = "홍길동";
float heroDamage = 1.5f;
Random random = new Random();
int num = random.Next(0, 101);
bool isAttackSuccess = true;
bool isCriticalAttack = (num > 20) && isAttackSuccess;
Console.WriteLine(isCriticalAttack);
int dungeonRequireLevel = 30;
int player1Level = 10; //버스타는 중
int player2Level = 60; //만렙
bool isAvailableEnter = (player1Level >= dungeonRequireLevel) || (player2Level >= dungeonRequireLevel);
Console.WriteLine("입장 가능 여부: " + isAvailableEnter);
- ! 예시
int player1HP = 10;
bool isAlive = player1HP > 0;
bool isDie = !isAlive;
'C# > 수업내용' 카테고리의 다른 글
0310 if/while/switch statement복습 (0) | 2021.03.10 |
---|---|
0310 switch 문으로 캐릭터 생성 예시 (0) | 2021.03.10 |
0309 문(Statement) (0) | 2021.03.09 |
0309 비트 연산자&삼항연산자 (0) | 2021.03.09 |
0309 데이터 타입의 변환 (0) | 2021.03.09 |