0309 연산자

2021. 3. 9. 13:24C#/수업내용

  • 산술 연산자 : + - / * %(나머지) = 홀수나 짝수 구할 때 많이 사용
  • / 할 때 소수점으로 나올 경우 소수점 아래는 버림.
    • 단항: ++ --
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