Unity3D/C#

C# 강좌 Day-08 (산술,증가,감소,복합할당식, 논리연산자)

일등하이 2021. 8. 15. 01:12
반응형

연산자 

 

산술연산자 (+, -, *, /, %)

증가++, 감소-- 연산자 (전위, 후위표기)

복합 할당식 +=, -=, oper= 등등 

 

 

산술 연산시 변수 타입에 신경을 쓰자

int hp = 100;
float damage = 12.5f;
hp = hp - (int)damage;

float heal = 10f;
hp = hp + (int)heal;

 

 

잘못된 결과가 나올수도 있다.

int maxHp = 100;
int hp = 20;
float per = hp / maxHp;
Console.WriteLine("hp: {0}%", per);

 

 

수정해본다 

int maxHp = 100;
int hp = 20;
float per = (float)hp / maxHp * 100f;
Console.WriteLine("hp: {0}%", per);

 

 

증가, 감소 연산자의 후위연산 

다음 실행에서 값이 변함을 주의한다 

int damage = 1;
damage++;   //1
Console.WriteLine(damage);  //2

증가, 감소 연산자의 전위 

현재 라인에서 값이 변한다.

int damage = 3;
Console.WriteLine(--damage);  //2
Console.WriteLine(damage);  //2

 

 

복합 할당식 연습 

string marine = "marine";
float marineDamage = 1f;

string hydra = "hydra";
float hydraMaxHp = 10f;
float hydraHp = hydraMaxHp;

//marine이 hydra를 공격 했습니다 -1 
//hydra hp: 9/10 (90%)


hydraHp -= marineDamage;
float per = (hydraHp / hydraMaxHp) * 100f;
Console.Write(per);
Console.WriteLine("{0}이 {1}를 공격 했습니다 -{2}", marine, hydra, marineDamage);
Console.WriteLine("hydra hp: {0}/{1} ({2}%)", hydraHp, hydraMaxHp, per);

 

 

 

비교연산자 (<, >, <=, >=, ==, !=)

int maxHp = 100;
int hp = 20;
float per = (float)hp / maxHp * 100f;

bool isDie = hp <= 0;
Console.WriteLine(isDie);   //false
Console.WriteLine(per == 0);    //false

 

 

 

논리연산자 (&&, ||, !)

 

AND (&&) : 둘다 참일 경우 True

float distance = 3.1f;
float sight = 5f;
float attackRange = 3f;

bool isAttackAvailable = (distance <= sight) && (distance <= attackRange);
Console.WriteLine("공격할수 있는 상태인가? : {0}", isAttackAvailable);

 

 

OR (||) : 둘중 하나다로 True면 True

int dungeonRequireLevel = 30;
int player1Level = 10;  //쪼렙 
int player2Level = 60;  //만렙 

bool isAvailableEnter =
(player1Level >= dungeonRequireLevel) ||
(player2Level >= dungeonRequireLevel);

Console.WriteLine("입장 가능 여부 : " + isAvailableEnter);

 

 

NOT(!) : True를 False로 False를 True로 반전 시킴 

int player1Hp = 10;
bool isAlive = player1Hp > 0;
bool isDie = !isAlive;
반응형