C#에선 산술 연산자, 증감 연산자, 조건 연산자, 관계 연산자, 논리 연산자 등 여러가지의 연산자를 제공합니다. 오늘은, 아래 표에 정리된 연산자들에 대해서 배워보도록 하겠습니다.
분류 | 연산자 | 예 |
---|---|---|
수식 연산자 | +, -, *, /, % | a = b + c; |
증감 연산자 | ++, — | a++; |
할당 연산자 | =, +=, -=, *=, /=, %= | a += b + c; |
논리 연산자 | &&, ||, ! | a && b |
관계 연산자 | <, >, ==, !=, >=, <= | a > b |
비트 연산자 | &, |, ^ | a ^ b |
목차
수식 연산자 (+, -, *, /, %)
수식 연산자에는 덧셈, 뺄셈, 곱셈, 나눗셈, 그리고 나눗셈을 한 뒤의 나머지를 구하는 연산자들이 있습니다. 아래는 그 연산자들을 표로 정리한 것입니다.
분류 | 기능 | 예 |
---|---|---|
+ | 양쪽 피연산자를 서로 더함 | a + b |
– | 왼쪽 피연산자에서 오른쪽 피연산자를 뺌 | a – b |
* | 양쪽 피연산자를 서로 곱함 | a * b |
/ | 왼쪽 피연산자를 오른쪽 피연산자로 나눔 | a / b |
% | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 뒤의 나머지를 구함 | a % b |
여기서, 피연산자란 연산의 대상을 말합니다. 예를 들어서, a + b라면 a와 b는 피연산자고 +는 연산자입니다.
아래는 수식 연산자를 사용하여 그 결과를 출력하는 예제입니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 55, b = 6; Console.WriteLine(a + b); Console.WriteLine(a - b); Console.WriteLine(a * b); Console.WriteLine(a / b); Console.WriteLine(a % b); } } }
61 // a + b, 55 + 6 = 61 49 // a - b, 55 - 6 = 49 330 // a * b, 55 * 6 = 330 9 // a / b, 55 / 6 = 9 1 // a %b, 55 % 6 = 1 계속하려면 아무 키나 누르십시오 . . .
예제를 보시면, 14 ~ 18줄에는 5개의 연산자가 등장합니다. 연산자를 만나 연산을 거치고 그 결과를 출력합니다.
증감 연산자(++, –)
증감 연산자에는 피연산자의 값을 1만큼 증가시키는 증가 연산자와, 1만큼 감소시키는 감소 연산자가 있습니다.
분류 | 기능 | 예 |
---|---|---|
++ (전위 증가 연산자) | 피연산자의 값을 1만큼 증가 | ++a; |
— (전위 감소 연산자) | 피연산자의 값을 1만큼 감소 | –a; |
++ (후위 증가 연산자) | 피연산자의 값을 1만큼 증가 | a++; |
— (후위 감소 연산자) | 피연산자의 값을 1만큼 감소 | a–; |
아래는 증감 연산자를 사용하여 그 결과를 출력하는 예제입니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 1; Console.WriteLine(++ a); // a의 값을 1 증가시키고, 문장을 실행 (a = 2) Console.WriteLine(a ++); // 문장을 실행 후, a의 값을 1 증가 (a = 3) Console.WriteLine(-- a); // a의 값을 1 감소시키고, 문장을 실행 (a = 2) Console.WriteLine(a --); // 문장을 실행 후, a의 값을 1 감소 (a = 1) } } }
2 2 2 2 계속하려면 아무 키나 누르십시오 . . .
전위는 우선 피연산자의 값을 증가시키거나 감소하고 그 문장을 실행하며, 후위는 문장을 먼저 실행하고 그 뒤로 값을 증가시키거나 감소하는 차이점을 보입니다. 우선 14행의 전위 증가 연산자를 만나 a의 값을 1 증가시키고 문장을 실행하니 2라는 값이 출력되었습니다. 그 뒤에 15행에서 우선 a의 값 2를 출력시키고 a의 값을 1 증가시켜 3이 되었습니다. 16행에서는 전위 감소 연산자를 만나 a의 값을 1 감소시키고 문장을 실행하여 2라는 값이 출력되었습니다. 마지막, 17행에서는 후위 감소 연산자를 만나 문장을 먼저 실행하여 2라는 값을 먼저 출력하고 a의 값을 1 감소시킵니다.
관계 연산자(<, >, ==, !=, >=, <=)
관계 연산자는 두 피연산자의 관계를 알아보는 연산자인데, 크기를 비교하는 연산자, 두 피연산자의 값이 서로 같거나 다른지 확인하는 연산자가 있습니다. 아래는 관계 연산자를 표로 정리해 둔 것입니다.
분류 | 기능 | 예 |
---|---|---|
< | 오른쪽 피연산자가 왼쪽 피연산자보다 크면 참, 작으면 거짓 | a < b |
> | 왼쪽 피연산자가 오른쪽 피연산자보다 크면 참, 작으면 거짓 | a > b |
== | 왼쪽 피연산자가 오른쪽 피연산자와 같으면 참, 다르면 거짓 | a == b |
!= | 왼쪽 피연산자가 오른쪽 피연산자와 다르면 참, 같으면 거짓 | a != b |
>= | 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참, 작으면 거짓 | a >= b |
<= | 오른쪽 피연산자가 왼쪽 피연산자보다 크거나 같으면 참, 작으면 거짓 | a <= b |
아래 예제는 관계 연산자를 사용하여 결과를 출력하는 예제입니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { 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 } } }
True False False True False True 계속하려면 아무 키나 누르십시오 . . .
* 관계 연산자의 결과는 반드시 참(True) 혹은 거짓(False)입니다.
할당 연산자(=, +=, -=, *=, /=, %=)
할당 연산자는 오른쪽 피연산자를 왼쪽 피연산자에 할당하는 기능을 합니다. 아래는 할당 연산자를 표로 정리해 둔 것입니다.
분류 | 기능 | 예 |
---|---|---|
= | 오른쪽 피연산자를 왼쪽 피연산자에 할당 | a = b; |
+= | a += b는 a = a + b와 같음 | a += b; |
-= | a -= b는 a = a – b와 같음 | a -= b; |
*= | a *= b는 a = a * b와 같음 | a *= b; |
/= | a /= b는 a = a / b와 같음 | a /= b; |
%= | a %= b는 a = a % b와 같음 | a %= b; |
아래는 할당 연산자를 사용하여 그 값을 출력하는 예제입니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 50, b = 60; a += b; Console.WriteLine(a); a -= b; Console.WriteLine(a); a *= b; Console.WriteLine(a); a /= b; Console.WriteLine(a); a %= b; Console.WriteLine(a); } } }
110 50 3000 50 50 계속하려면 아무 키나 누르십시오 . . .
논리 연산자(&&, ||, !)
논리 연산자는 위에서 배운 관계 연산자 처럼 결과 값이 true 또는 false이 되는 연산자 입니다. 아래의 표들은 논리곱 연산자, 논리합 연산자, 부정 연산자의 진리표입니다.
A | B | A && B |
---|---|---|
참 | 참 | 참 |
참 | 거짓 | 거짓 |
거짓 | 참 | 거짓 |
거짓 | 거짓 | 거짓 |
논리곱 연산자의 특징은 A와 B 모두 참이여야 결과값으로 참을 반환합니다.
A | B | A || B |
---|---|---|
참 | 참 | 참 |
참 | 거짓 | 참 |
거짓 | 참 | 참 |
거짓 | 거짓 | 거짓 |
논리합 연산자의 특징은 A나 B 둘중 하나라도 참일 경우에 결과값으로 참을 반환합니다.
A | !A |
---|---|
참 | 거짓 |
거짓 | 참 |
부정 연산자의 특징은 A가 참일 경우에 거짓을, 거짓일 경우에는 참을 결과값으로 반환합니다.
아래는 논리 연산자를 사용하여 그 결과를 출력한 예제입니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 50, b = 60; Console.WriteLine(a > 40 && b > 50); Console.WriteLine(a > 40 || b > 70); Console.WriteLine(!(a < b)); } } }
True True False 계속하려면 아무 키나 누르십시오 . . .
예제를 살펴보면, 14행에서 논리곱 연산자가 쓰였는데 a > 40은 참, b > 50도 참이므로 참을 결과값으로 반환합니다. 15행에서는 논리합 연산자가 쓰였으며 a > 40은 참, b > 70은 거짓이나 논리합 연산자는 하나라도 참일 경우에 참을 결과값으로 반환하므로 참이 출력됩니다. 16행에선 부정 연산자가 쓰였습니다. a < b는 원래 참이나 부정 연산자로 인해 결과를 부정하여 거짓을 결과값으로 반환하였습니다.
비트 연산자(&, |, ^)
비트 연산자는 말 그대로 비트를 다루는 연산자입니다. 아래의 표는 비트 연산자를 정리해 둔 것입니다.
분류 | 기능 | 예 |
---|---|---|
& | 두 피연산자의 대응되는 비트에 논리곱을 수행 | a & b |
| | 두 피연산자의 대응되는 비트에 논리합을 수행 | a | b |
^ | 두 피연산자의 대응되는 비트에 배타적 논리합을 수행 | a ^ b |
아래는 배타적 논리합(XOR, ^)의 진리표입니다. A와 B중 하나만 참일 경우에 결과값으로 참을 반환합니다.
A | B | A ^ B |
---|---|---|
참 | 참 | 거짓 |
참 | 거짓 | 참 |
거짓 | 참 | 참 |
거짓 | 거짓 | 거짓 |
* 1 바이트(Byte)는 8개의 비트(Bit)로 이루어집니다.
아래는 비트 연산자를 사용하여 그 결과를 출력하는 예제입니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a = 5, b = 10; Console.WriteLine(a & b); // 상위 3바이트 생략, 00000101 & 00001010 = 00000000(0) Console.WriteLine(a | b); // 상위 3바이트 생략, 00000101 | 00001010 = 00001111(15) Console.WriteLine(a ^ b); // 상위 3바이트 생략, 00000101 ^ 00001010 = 00001111(15) } } }
0 15 15 계속하려면 아무 키나 누르십시오 . . .
* Int형은 4바이트를 차지하고, 32비트로 구성됩니다.