콘텐츠로 건너뛰기
Home » 연산자(Operators)

연산자(Operators)

  • 기준
연산자(Operators)

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이 되는 연산자 입니다. 아래의 표들은 논리곱 연산자, 논리합 연산자, 부정 연산자의 진리표입니다.

ABA && B
거짓거짓
거짓거짓
거짓거짓거짓
논리곱(&&) 연산자의 진리표

논리곱 연산자의 특징은 A와 B 모두 참이여야 결과값으로 참을 반환합니다.

ABA || 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중 하나만 참일 경우에 결과값으로 참을 반환합니다.

ABA ^ 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비트로 구성됩니다.

댓글 남기기