Unity

연산자란? 연산자 종류 - 단항 연산자, 이항 연산자, 삼항 연산자

코샵 2023. 3. 16. 00:50
반응형
C# 및 다른 프로그래밍 언어에서는 다양한 종류의 연산자를 사용할 수 있습니다. 연산자는 피연산자의 개수에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 구분됩니다.

단항 연산자

단항 연산자는 하나의 피연산자를 가지는 연산자입니다. C#에서 사용하는 대표적인 단항 연산자로는 다음과 같습니다.

  • + : 양수 부호를 지정합니다.
  • -  : 음수 부호를 지정합니다.
  • ++ : 피연산자에 1을 더합니다.
  • -- : 피연산자에서 1을 뺍니다.
  • ! : 논리 부정 연산자입니다. true를 false로, false를 true로 바꿉니다.

단항 연산자는 이항 연산자보다 연산 속도가 빠릅니다.

이항 연산자

이항 연산자는 두 개의 피연산자를 가지는 연산자입니다. C#에서 사용하는 대표적인 이항 연산자로는 다음과 같습니다.

  • + : 더하기 연산을 수행합니다.
  • - : 빼기 연산을 수행합니다.
  • * : 곱하기 연산을 수행합니다.
  • / : 나누기 연산을 수행합니다.
  • % : 나머지 연산을 수행합니다.
  • == : 두 값이 같은 경우 참(true)을 반환합니다.
  • != : 두 값이 다른 경우 참(true)을 반환합니다.
  • < : 왼쪽 값이 오른쪽 값보다 작은 경우 참(true)을 반환합니다.
  • > : 왼쪽 값이 오른쪽 값보다 큰 경우 참(true)을 반환합니다.
  • <= : 왼쪽 값이 오른쪽 값보다 작거나 같은 경우 참(true)을 반환합니다.
  • >= : 왼쪽 값이 오른쪽 값보다 크거나 같은 경우 참(true)을 반환합니다.

이항 연산자는 단항 연산자보다 연산 속도가 느립니다.


논리 연산자

논리 연산자에는 AND(&&), OR(||), NOT(!) 연산자가 있으며, 단항 연산자와 이항 연산자에서 모두 사용됩니다.

단항 연산자

논리 연산자 중 NOT(!) 연산자는 단항 연산자입니다. 이 연산자는 피연산자가 참(True)이면 거짓(False)을, 거짓(False)이면 참(True)을 반환합니다. 예를 들어, 다음은 NOT(!) 연산자를 사용한 코드입니다.

bool isTrue = true;
bool isFalse = !isTrue;

위 코드에서는 isTrue 변수에 true 값을 할당하고, isFalse 변수에는 NOT(!) 연산자를 사용하여 isTrue 변수의 반대 값을 할당하였습니다.

이항 연산자

AND(&&) 연산자와 OR(||) 연산자는 이항 연산자입니다. AND 연산자는 두 개의 피연산자가 모두 참(True)일 때 참(True)을 반환하며, OR 연산자는 두 개의 피연산자 중 하나라도 참(True)이면 참(True)을 반환합니다. 예를 들어, 다음은 AND(&&) 연산자와 OR(||) 연산자를 사용한 코드입니다.

bool isTrue = true;
bool isFalse = false;

bool result1 = isTrue && isFalse;
bool result2 = isTrue || isFalse;

위 코드에서는 isTrue 변수에 true 값을 할당하고, isFalse 변수에는 false 값을 할당하였습니다.

result1 변수에는 AND(&&) 연산자를 사용하여 isTrue와 isFalse 변수의 논리곱을 할당하였으므로, result1 변수에는 false 값이 할당됩니다.

result2 변수에는 OR(||) 연산자를 사용하여 isTrue와 isFalse 변수의 논리합을 할당하였으므로, result2 변수에는 true 값이 할당됩니다.

따라서, 논리 연산자를 사용하여 조건문의 결과를 판별하거나, 반복문의 종료 조건을 판별하는 등 다양한 상황에서 활용할 수 있습니다.

이외에도, 논리 연산자를 활용하여 비트 연산자와 같이 사용할 수도 있습니다. 예를 들어, 다음과 같이 논리 연산자와 비트 연산자를 함께 사용하여 값을 바꿀 수 있습니다.

int value = 0b10101010;
value |= 0b00010000;
value &= ~0b00000001;

위 코드에서는 value 변수에 0b10101010(10진수로 170) 값을 할당하고, value 변수에 0b00010000 값을 OR(|=) 연산자를 사용하여 할당하였습니다. 이는 value 변수의 5번째 비트를 1로 바꾼 것입니다.

또한, value 변수에 0b00000001 값을 NOT(~) 연산자를 사용하여 할당하고, 이 결과값과 value 변수에 AND(&) 연산자를 사용하여 할당하였습니다. 이는 value 변수의 0번째 비트를 0으로 바꾼 것입니다.

 

&연산자와 &&연산자의 차이점 ( | 과 ||도 동일)
& 연산자와 && 연산자는 비교 연산자와 같이 사용될 때, 조건문의 실행 결과가 달라질 수 있습니다. & 연산자는 두 개의 피연산자를 모두 비교하기 때문에, 첫 번째 피연산자가 거짓(false)일 때에도 두 번째 피연산자를 비교합니다. 하지만 && 연산자는 첫 번째 피연산자가 거짓(false)일 때, 두 번째 피연산자를 비교하지 않고 조건문의 실행을 멈춥니다. 이러한 차이점 때문에, && 연산자를 사용하면 코드 실행 속도를 높일 수 있습니다.

삼항 연산자

삼항 연산자는 세 개의 피연산자를 가지는 연산자입니다. 조건식 ? 값1 : 값2의 형태를 가집니다. 조건식이 참(true)이면 값1을, 거짓(false)이면 값2를 반환합니다.

int x = 5;
string result = x > 0 ? "양수" : "음수";

x가 0보다 크므로 result에 양수가 선언됩니다.

삼항 연산자를 중첩 시킬수도 있습니다
int x = 5;
string result = x > 0 ? "양수" : (x < 0 ? "음수" : "0");​

삼항 연산자는 코드를 더 짧고 간결하게 만들 수 있지만 특히 중첩된 경우 코드를 읽고 이해하기 어렵게 만들 수도 있다는 점에 유의하는 것이 중요합니다. 따라서 일반적으로 간단한 if-else 문에만 삼항 연산자를 사용하고 보다 복잡한 논리에는 일반 if-else 문을 사용하는 것이 가장 좋습니다.