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
int currentHp = 100;
int damage = 15;
int currentHp = 100;
int damage = 15;
currentHp -= damage; // 출력값 : 85
연산자 | 동치 |
---|---|
a+=b | a = a + b |
a-=b | a = a - b |
a*=b | a = a * b |
a/=b | a = a / b |
a%=b | a = a % b |
int score = 3
score = +score // + 단항연산자(양수) : 변수 값 그대로 반환
score = -score // - 단항연산자(음수) : 값을 반전하여 바꾸기
++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
연산자 | 예 | 의미 |
---|---|---|
< | A < B | B가 A보다 크면 true |
> | A > B | A가 B보다 크면 true |
<= | A <= B | B가 A보다 크거나 같으면 true |
>= | A >= B | A가 B보다 크거나 같으면 true |
== | A == B | A와 B가 같으면 true |
!= | A != B | A와 B가 다르면 true |
연산자 | 예 | 의미 |
---|---|---|
&& | A && B | A와 B가 둘 다 true면 true(AND) |
|| | A || B | A와 B 중 하나 이상이 true면 true(OR) |
! | !A | A가 true 면 false로, A라 false 면 true로 |
아래 코드를 예시로 코드의 모습을 살펴보자. 작성한 코드는 모두 같은 결과를 보여준다.
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}살입니다.")
사용자에게 값을 입력받음.
변수에 넣지 않으면 값을 따로 저장하지는 않으므로 유의하도록 한다.
Console.Write("캐릭터의 이름을 입력해주세요 : ");
string name = Console.ReadLine();
Console.WriteLine("환영합니다. {0}님.", name);
입력값을 string으로밖에 받을 수 없다면, 입력 받은 숫자를 활용하기 위해서는 변환이 필요하다.
Console.ReadLine(); 으로 정수인 값을 입력받았을 때, 이는 문자열로 된 숫자이다.
문자열로 된 정수를 정수(integer) 형태로 변환하기 위해서 사용한다.
Console.Write("나이를 입력해주세요 : ");
string input = Console.ReadLine(); // 여기에서 "20"을 입력했을 때
int age = int.Parse(input); // "20" -> 20으로 변환
Console.WriteLine($"당신의 나이는 {age}살입니다."); // 20으로 출력
Console.WriteLine($"다음년도의 나이는 {age + 1}살입니다"); // 21로 출력
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}살입니다");
아래와 같은 상황을 가정해보자.
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