XR 플밍 - 1. 프로그램 언어 기초 (2-1) - 연산자, 문자열 입력과 변환(3/12)

이형원·2025년 3월 12일
0

XR플밍

목록 보기
4/215

연산자(Operator)

  • 일반적인 수학 연산과 유사한 연산자들
  • C#은 여러 연산자를 제공하여 기본 연산을 수행할 수 있음

1. 산술 연산자

  • "+" 더하기
Console.WriteLine(1 + 3);	// 출력값 : 4
  • "-" 빼기
Console.WriteLine(3 - 1);	// 출력값 : 2
  • "*" 곱하기
Console.WriteLine(4 * 2);	// 출력값 : 8
  • "/" 나누기
Console.WriteLine(5 / 3);	// 출력값 : 1 - 주의! 정수(int)로만 나누기를 하면 소수점을 버림.
  • "%" 나머지
Console.WriteLine(14 % 4);	// 출력값 : 2

* 만약 나누기를 했을 때 소수점이 나오게 하기 위해선?

-> 연산하는 인자를 실수로 처리한다.

Console.WriteLine(5 / 3f);	// 출력값 : 1.66666666 - 둘 중 하나/둘 다에 실수 처리를 해 줘도 된다.

* 사용 예시 - 자리수를 구하는 아이디어

// 1의 자리 숫자
Console.WriteLine(59386737 % 10);			// 출력값 : 7

// 10의 자리 숫자
Console.WriteLine(59386737 / 10 % 10);		// 출력값 : 3

// 100의 자리 숫자
Console.WriteLine(59386737 / 100 % 10);		// 출력값 : 7

2. 대입 연산자와 복합 대입 연산자

  • 대입(할당) 연산자
    변수를 선언하고 할당함 (=)
int currentHp = 100;
int damage = 15;
  • 복합 대입 연산자
    연산과 할당을 합쳐놓은 것
int currentHp = 100;
int damage = 15;

currentHp -= damage;	// 출력값 : 85
연산자동치
a+=ba = a + b
a-=ba = a - b
a*=ba = a * b
a/=ba = a / b
a%=ba = a % b

3. 단항 연산자와 증가/감소 연산자

  • 단항 연산자 : 양수와 음수를 표현
int score = 3
score = +score	// + 단항연산자(양수) : 변수 값 그대로 반환
score = -score	// - 단항연산자(음수) : 값을 반전하여 바꾸기
  • 증가/감소 연산자 : 변수값을 1 증가 혹은 1 감소
++Hp;        // 전위증가연산자 : 값을 1 증가
Hp++;        // 후위증가연산자 : 값을 1 증가
--Hp;        // 전위감소연산자 : 값을 1 감소
Hp--;        // 후위감소연산자 : 값을 1 감소

** 전위연산자와 후위연산자

// 전위연산자 : 값을 반환하기 전에 연산
int iValue = 0;
Console.WriteLine(iValue);      // output : 0
Console.WriteLine(++iValue);    // output : 1
Console.WriteLine(iValue);      // output : 1
  
// 후위연산자 : 값을 반환한 후에 연산
iValue = 0;
Console.WriteLine(iValue);      // output : 0
Console.WriteLine(iValue++);    // output : 0
Console.WriteLine(iValue);      // output : 1

4. 관계형 연산자와 논리 연산자

  • 관계형 연산자
연산자의미
<A < BB가 A보다 크면 true
>A > BA가 B보다 크면 true
<=A <= BB가 A보다 크거나 같으면 true
>=A >= BA가 B보다 크거나 같으면 true
==A == BA와 B가 같으면 true
!=A != BA와 B가 다르면 true
  • 논리 연산자
연산자의미
&&A && BA와 B가 둘 다 true면 true(AND)
||A || BA와 B 중 하나 이상이 true면 true(OR)
!!AA가 true 면 false로, A라 false 면 true로

사이드 팁

  • Region
    편의 기능으로 #region / #region으로 영역 설정으로 하고, 필요할 때 접어두거나 펼칠 수 있다.
    #region 뒤에 이름을 붙여 구분할 수도 있다.

문자열 입력과 변환

1. 문자열 보간

  • 편의 기능 중 하나로, 변수를 마치 문자열 내부의 단어처럼 인식하게 하는 기능.
    앞에 "$"만 넣으면 되며, 수식을 깔끔하게 정리하는 데에 유용하다

아래 코드를 예시로 코드의 모습을 살펴보자. 작성한 코드는 모두 같은 결과를 보여준다.

1) 이어적기/덧셈 (비권장방식) - 코드를 보기 어렵고 연산속도가 느려지므로 이렇게 쓰지 말자

int age = 20;

Console.Write("당신의 나이는");
Console.Write(age);
Console.WriteLine("입니다");

// 아래와 같은 방식도 가능

Console.WriteLine("당신의 나이는" + age + "입니다.");

2) 자리표시자

int age = 20;

Console.WriteLine("당신의 나이는 {0}입니다.", age);

3) 문자열 보간

int age = 20;

Console.WriteLine($"당신의 나이는 {age}살입니다.")
  • 자리표시자 vs 문자열 보간
    • 특정 변수를 여러 자리에 써야 할 경우 - 자리표시자가 좋음
    • 변수를 반복해서 쓰는 횟수가 적고, 가독성을 높이고 싶은 경우 - 문자열 보간이 좋음

2. ReadLine

사용자에게 값을 입력받음.
변수에 넣지 않으면 값을 따로 저장하지는 않으므로 유의하도록 한다.

Console.Write("캐릭터의 이름을 입력해주세요 : ");
string name = Console.ReadLine();  
Console.WriteLine("환영합니다. {0}님.", name);
  • 주의사항 : Console.ReadLine()은 string으로만 값을 입력 받을 수 있다.

입력값을 string으로밖에 받을 수 없다면, 입력 받은 숫자를 활용하기 위해서는 변환이 필요하다.

3. Parse, TryParse

Console.ReadLine(); 으로 정수인 값을 입력받았을 때, 이는 문자열로 된 숫자이다.
문자열로 된 정수를 정수(integer) 형태로 변환하기 위해서 사용한다.

  • Parse
    입력값을 지정한 자료형으로 변환한다.
    메서드 사용 방법은 (자료형).Parse(입력값); 이다.
    아래와 같이 문자열로 입력된 정수를 정수로 반환할 수 있다.
Console.Write("나이를 입력해주세요 : ");
string input = Console.ReadLine();  					// 여기에서 "20"을 입력했을 때
int age = int.Parse(input); 							// "20" -> 20으로 변환
Console.WriteLine($"당신의 나이는 {age}살입니다."); 		// 20으로 출력
Console.WriteLine($"다음년도의 나이는 {age + 1}살입니다"); 	// 21로 출력  
  • TryParse
    Parse에서 오류가 발생한 경우를 감안할 때 사용한다. 오류가 발생하면 false(0)을 반환한다.
    메서드 사용 방법은 (자료형).TryParse(입력값, out 변수) 이다.
    (변수는 TryParse의 시도가 성공했을 시 해당 입력값을 변수에 저장한다)
int age;
  
Console.Write("나이를 입력해주세요 : ");
string input = Console.ReadLine();

bool success = int.TryParse(input, out age);
// 여기서 유효하지 않은 문자열을 입력하면 false, 0을 입력하면 true로 나온다.
  
Console.WriteLine($"입력의 유효 여부 : {success}");
Console.WriteLine($"당신의 나이는 {age}살입니다.");
Console.WriteLine($"다음년도의 나이는 {age + 1}살입니다");

4. 강제 형변환

아래와 같은 상황을 가정해보자.

 1) 파티원은 4명이고, 9라는 보상이 나왔다.
 2) 보상을 파티원에게 공평하게 분배한다. 이때 보상은 소수점 자리까지 분배한다.

다만 이와 같은 상황에서 연산했을 경우 문제가 발생한다.

int award = 9;
int partyMember = 4;
  
float dividedMoney = award/partyMember;
Console.WriteLine(dividedMoney);		// 출력값 : 2

int끼리의 연산으로 인해 소수점 아래 자리가 버려졌기에 2라는 결과가 출력된다.
여기서 소수점을 표기하기 위해서 award나 partyMember를 float로 변환할 수도 있겠으나,
자료형을 변경했을 경우 파티멤버가 4.5명으로 표기된다든지의 문제가 발생할 수 있다.

따라서 강제 형변환을 사용할 수 있다. 사용 방법은 (바꿀 자료형)변수이다.
위의 경우에서 코드를 조금만 수정해보자

int award = 9;
int partyMember = 4;
  
float dividedMoney = (float)award/partyMember;
Console.WriteLine(dividedMoney);		// 출력값 : 2.25
  • 유의할 점
    강제 형변환이 어느 시점에 되는지에 따라 결과값이 달라질 수도 있으므로, 의도한 바와 순서를 잘 생각하도록 한다.
float distance = 9.7f;
int partyMemeber = 4;

Console.WriteLine((int)distance / partyMemeber); 	// 9/4 = 2.25 -> 2
Console.WriteLine((int)(distance / partyMemeber)); 	// 9.7/4 = 2.425 -> 2
profile
게임 만들러 코딩 공부중

0개의 댓글