산술 연산자는 사칙연산을 다루는 연산자로 가장 기본적이면서 가장 많이 사용되는 연산자이다.
산술 연산자의 우선순위는 수학에서의 사칙연산 우선순위와 같다.
| 연산자 | 설명 | 지원 형식 |
|---|---|---|
+ |
왼쪽 피연산자에서 오른쪽 피연산자를 더한다. | 모든 수치 데이터 형식 |
- |
왼쪽 피연산자에서 오른쪽 피연산자를 뺀다. | 모든 수치 데이터 형식 |
* |
왼쪽 피연산자에서 오른쪽 피연산자를 곱한다. | 모든 수치 데이터 형식 |
/ |
왼쪽 피연산자를 오른쪽 피연산자로 나눈 몫을 구한다. | 모든 수치 데이터 형식 |
% |
왼쪽 피연산자를 오른쪽 피연산자로 나눈 후의 나머지를 구한다. | 모든 수치 데이터 형식 |
using System;
namespace Operator
{
class MainApp
{
static void Main(string[] args)
{
int a = 111 + 222;
Console.WriteLine($"a : {a}");
int b = a - 100;
Console.WriteLine($"b : {b}");
int c = b * 10;
Console.WriteLine($"c : {c}");
double d = c / 6.3;
Console.WriteLine($"d : {d}");
Console.WriteLine($"22 / 7 = {22 / 7}({22 % 7})");
}
}
}
a : 333
b : 233
c : 2330
d : 369.8412698412699
22 / 7 = 3(1)
증감 연산자는 피연산자를 1 씩 증가 또는 감소시킬 때 사용하는 연산자로 피연산자가 하나뿐인 단항 연산자
이다. 증감 연산자는 피연산자의 어느 쪽에 위치하는가에 따라 연산 순서 및 결과가 달라진다.
| 연산자 | 설명 | 지원 형식 |
|---|---|---|
n++ |
해당 문장을 진행한 후 피연산자의 값을 1 증가시킨다. |
모든 수치 데이터 형식과 열거 형식 |
++n |
피연산자의 값을 1 증가시킨 후에 해당 문장을 진행한다. |
모든 수치 데이터 형식과 열거 형식 |
n-- |
해당 문장을 진행한 후 피연산자의 값을 1 감소시킨다. |
모든 수치 데이터 형식과 열거 형식 |
--n |
피연산자의 값을 1 감소시킨 후에 해당 문장을 진행한다. |
모든 수치 데이터 형식과 열거 형식 |
using System;
namespace Operator
{
class MainApp
{
static void Main(string[] args)
{
int a = 10;
Console.WriteLine(a++);
Console.WriteLine(++a);
Console.WriteLine(a--);
Console.WriteLine(--a);
}
}
}
10
12
12
10
문자열과 함께 사용하는 + 연산자는 '문자열 결합 연산자' 이다.
using System;
namespace Operator
{
class MainApp
{
static void Main(string[] args)
{
{
string result = "123" + "456";
Console.WriteLine(result);
}
{
string result = "Hello" + " " + "World!";
Console.WriteLine(result);
}
}
}
}
123456
Hello World!
할당 연산자는 변수 또는 상수에 피연산자 데이터를 할당하는 기능을 한다.
| 연산자 | 이름 | 설명 |
|---|---|---|
= |
할당 연산자 | 오른쪽 피연산자를 왼쪽 피연산자에 할당함 |
+= |
덧셈 할당 연산자 | 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; 와 같음. |
&= |
논리곱 할당 연산자 | a &= b; 는 a = a & b; 와 같음. |
!= |
논리합 할당 연산자 | `a |
^= |
배타적 논리합 할당 연산자 | a ^= b; 는 a = a ^ b; 와 같음. |
<<= |
왼쪽 시프트 할당 연산자 | a <<= b; 는 a = a << b; 와 같음. |
>>= |
오른쪽 시프트 할당 연산자 | a >>= b; 는 a = a >> b; 와 같음. |
using System;
namespace Operator
{
class MainApp
{
static void Main(string[] args)
{
int a;
a = 100;
Console.WriteLine($"a = 100 : {a}");
a += 90;
Console.WriteLine($"a += 90 : {a}");
a -= 80;
Console.WriteLine($"a -= 80 : {a}");
a *= 70;
Console.WriteLine($"a *= 70 : {a}");
a /= 60;
Console.WriteLine($"a /= 60 : {a}");
a %= 50;
Console.WriteLine($"a %= 50 : {a}");
a &= 40;
Console.WriteLine($"a &= 40 : {a}");
a |= 30;
Console.WriteLine($"a |= 30 : {a}");
a ^= 20;
Console.WriteLine($"a ^= 20 : {a}");
a <<= 10;
Console.WriteLine($"a <<= 10 : {a}");
a >>= 1;
Console.WriteLine($"a >>= 1 : {a}");
}
}
}
a = 100 : 100
a += 90 : 190
a -= 80 : 110
a *= 70 : 7700
a /= 60 : 128
a %= 50 : 28
a &= 40 : 8
a |= 30 : 30
a ^= 20 : 10
a <<= 10 : 10240
a >>= 1 : 5120
관계 연산자는 두 피연산자 사이의 상대적인 크기를 평가하는 연산자이다.
| 연산자 | 설명 | 지원 형식 |
|---|---|---|
< |
왼쪽 피연산자가 오른쪽 피연산자보다 작으면 true 를 반환 |
모든 수치 형식과 열거 형식 |
> |
왼쪽 피연산자가 오른쪽 피연산자보다 크면 true 를 반환 |
모든 수치 형식과 열거 형식 |
<= |
왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 true 를 반환 |
모든 수치 형식과 열거 형식 |
>= |
왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 true 를 반환 |
모든 수치 형식과 열거 형식 |
== |
왼쪽 피연산자와 오른쪽 피연산자가 같으면 true 를 반환 |
모든 데이터 형식 |
!= |
왼쪽 피연산자와 오른쪽 피연산자가 같지 않으면 true 를 반환 |
모든 데이터 형식 |
using System;
namespace Operator
{
class MainApp
{
static void Main(string[] args)
{
Console.WriteLine($"3 > 4 : {3 > 4}");
Console.WriteLine($"3 >= 4 : {3 >= 4}");
Console.WriteLine($"3 < 4 : {3 < 4}");
Console.WriteLine($"3 <= 4 : {3 <= 4}");
Console.WriteLine($"3 == 4 : {3 == 4}");
Console.WriteLine($"3 != 4 : {3 != 4}");
}
}
}
3 > 4 : False
3 >= 4 : False
3 < 4 : True
3 <= 4 : True
3 == 4 : False
3 != 4 : True
논리 연산자는 주어진 논리식을 판단하여 true, false 를 결정하는 연산자이다.
&& 연산과 || 연산은 두개의 피연산자를 갖고, ! 연산은 한 개의 피연산자를 갖는다.
| 연산자 | 설명 |
|---|---|
&& |
논리식이 모두 true면 true를 반환한다. (논리 AND 연산) |
| ` | |
! |
논리식의 결과가 true면 false를, false면 true를 반환한다. (논리 NOT 연산) |
논리 연산자 동작 결과 (진리표)
| A | B | A && B | A || B | !A |
| --- | --- | --- | --- | --- |
| true | true | true | true | false |
| false | true | false | true | true |
| true | false | false | true | false |
| false | false | false | false | true |
using System;
namespace Operator
{
class MainApp
{
static void Main(string[] args)
{
Console.WriteLine("Testing && ... ");
Console.WriteLine($"1 > 0 && 4 < 5 : {1 > 0 && 4 < 5}");
Console.WriteLine($"1 > 0 && 4 > 5 : {1 > 0 && 4 > 5}");
Console.WriteLine($"1 == 0 && 4 > 5 : {1 == 0 && 4 > 5}");
Console.WriteLine($"1 == 0 && 4 < 5 : {1 == 0 && 4 < 5}");
Console.WriteLine("\\nTesting || ... ");
Console.WriteLine($"1 > 0 || 4 < 5 : {1 > 0 || 4 < 5}");
Console.WriteLine($"1 > 0 || 4 > 5 : {1 > 0 || 4 > 5}");
Console.WriteLine($"1 == 0 || 4 > 5 : {1 == 0 || 4 > 5}");
Console.WriteLine($"1 == 0 || 4 < 5 : {1 == 0 || 4 < 5}");
Console.WriteLine("\\nTesting ! ... ");
Console.WriteLine($"!True : {!true}");
Console.WriteLine($"!False : {!false}");
}
}
}
Testing && ...
1 > 0 && 4 < 5 : True
1 > 0 && 4 > 5 : False
1 == 0 && 4 > 5 : False
1 == 0 && 4 < 5 : False
Testing || ...
1 > 0 || 4 < 5 : True
1 > 0 || 4 > 5 : True
1 == 0 || 4 > 5 : False
1 == 0 || 4 < 5 : True
Testing ! ...
!True : False
!False : True
조건 연산자 ?: 는 피연산자를 세 개나 가지는 연산자로 다음과 같이 사용한다.
조건식 ? 반환값1 : 반환값2
? 앞의 조건식이 true 면 반환값1 을, false 면 반환값2 를 반환한다.

using System;
namespace Operator
{
class MainApp
{
static void Main(string[] args)
{
string result = (10 % 2) == 0 ? "짝수" : "홀수";
Console.WriteLine(result);
}
}
}
짝수
비트 연산자는 비트 bit 단위로 논리 연산을 할 때 사용하는 연산자이다.
| --- | --- | --- | --- |

&, | 연산

^, ~ 연산
왼쪽 시프트 연산 << 의 경우, 양수 음수와 관계없이 새롭게 채워지는 비트들은 0 으로 채워지고,
이동으로인해 밀려나는 왼쪽 비트들은 버려진다.

<< 연산
오른쪽 시프트 연산 >> 의 경우, 양수를 이동시킬 때 새롭게 채워지는 비트들은 0 으로 채워지고,
음수를 이동시킬 때 새롭게 채워지는 비트들은 1 로 채워진다.
이동으로 인해 밀려나는 오른쪽 비트들은 버려진다.

>> 연산