C# 연산자
C# Operators
연산자는 컴파일러에게 특정 수학 또는 논리 연산을 수행하도록 지시하는 기호입니다. C#에는 다음과 같이 분류되는 다양한 내장 연산자가 있습니다.
산술 연산자
관계 연산자
논리 연산자
비트 연산자
할당 연산자
-
기타 연산자
이 튜토리얼에서는 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 할당 연산자 및 기타 연산자를 하나씩 설명합니다.
산술 연산자
다음 표에서는 C#에서 지원하는 모든 산술 연산자를 보여줍니다. 변수 A의 값이 10이고 변수 B의 값이 20이라고 가정하면 다음과 같습니다.
Operator | Description | Example |
---|---|---|
+ | 두 피연산자를 추가합니다 | 에이 + B는 30 |
- | 첫 번째 피연산자에서 두 번째 피연산자 | 를 뺍니다 A - B는 -10 |
* | 두 피연산자를 곱합니다 | A * B는 200 |
/ | 분자를 분모로 나누면 | B / A는 2 |
% | 모듈로 연산자, 정수 나누기 후 나머지 | B % A는 0 |
++ | 증분을 얻습니다. 연산자, 정수 값을 1 | A++ 증가시키면 11 |
-- | 감소 연산자, 정수 값을 1 | A만큼 감소-- 9 |
예제
C#에서 사용할 수 있는 모든 산술 연산자에 대해 알아보려면 아래 예를 살펴보세요.
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 21; int b = 10; int c; c = a + b; Console.WriteLine("Line 1 - c 的值是 {0}", c); c = a - b; Console.WriteLine("Line 2 - c 的值是 {0}", c); c = a * b; Console.WriteLine("Line 3 - c 的值是 {0}", c); c = a / b; Console.WriteLine("Line 4 - c 的值是 {0}", c); c = a % b; Console.WriteLine("Line 5 - c 的值是 {0}", c); // ++a 先进行自增运算再赋值 c = ++a; Console.WriteLine("Line 6 - c 的值是 {0}", c); // 此时 a 的值为 22 // --a 先进行自减运算再赋值 c = --a; Console.WriteLine("Line 7 - c 的值是 {0}", c); Console.ReadLine(); } } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Line 1 - c 的值是 31 Line 2 - c 的值是 11 Line 3 - c 的值是 210 Line 4 - c 的值是 2 Line 5 - c 的值是 1 Line 6 - c 的值是 22 Line 7 - c 的值是 21
c = a++: First a를 c에 할당한 다음 a에 대해 증분 연산을 수행합니다.
c = ++a: 먼저 a에 대해 증분 연산을 수행한 다음 a를 c에 할당합니다.
c = a--: 먼저 a를 c에 할당한 다음 a에 대해 자체 감소 연산을 수행합니다.
c = --a: 먼저 a에 대해 감소 연산을 수행한 다음 a를 c에 할당합니다.
Instance
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 1; int b; // a++ 先赋值再进行自增运算 b = a++; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // ++a 先进行自增运算再赋值 a = 1; // 重新初始化 a b = ++a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // a-- 先赋值再进行自减运算 a = 1; // 重新初始化 a b= a--; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // --a 先进行自减运算再赋值 a = 1; // 重新初始化 a b= --a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); } } }
인스턴스 실행 »
온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요
执行以上程序,输出结果为:
a = 2 b = 1 a = 2 b = 2 a = 0 b = 1 a = 0 b = 0
관계 연산자
테이블 아래는 C# 지원을 보여줍니다. 기호의 관계 연산. 변수 A의 값이 10이고 변수 B의 값이 20이라고 가정하면,
Operator | Description | Example |
---|---|---|
== | 값이 20인지 확인하세요. 두 피연산자는 같음이며, 같으면 조건이 true입니다. | (A == B)는 사실이 아닙니다. |
!= | 두 피연산자의 값이 같은지 확인하고, 그렇지 않으면 조건이 true입니다. | (A != B)는 사실입니다. |
> | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 큰지 확인하고, 그렇다면 조건이 true입니다. | (A>B)는 사실이 아닙니다. |
< | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작은지 확인하고, 그렇다면 조건은 true입니다. | (A < B)는 참입니다. |
>= | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같은지 확인하고, 그렇다면 조건이 true입니다. | (A >= B)는 사실이 아닙니다. |
<= | 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같은지 확인하고, 그렇다면 조건이 true입니다. | (A <= B)는 참입니다. |
예제
C#에서 사용할 수 있는 모든 관계 연산자에 대해 알아보려면 아래 예를 살펴보세요.
using System; class Program { static void Main(string[] args) { int a = 21; int b = 10; if (a == b) { Console.WriteLine("Line 1 - a 等于 b"); } else { Console.WriteLine("Line 1 - a 不等于 b"); } if (a < b) { Console.WriteLine("Line 2 - a 小于 b"); } else { Console.WriteLine("Line 2 - a 不小于 b"); } if (a > b) { Console.WriteLine("Line 3 - a 大于 b"); } else { Console.WriteLine("Line 3 - a 不大于 b"); } /* 改变 a 和 b 的值 */ a = 5; b = 20; if (a <= b) { Console.WriteLine("Line 4 - a 小于或等于 b"); } if (b >= a) { Console.WriteLine("Line 5 - b 大于或等于 a"); } } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Line 1 - a 不等于 b Line 2 - a 不小于 b Line 3 - a 大于 b Line 4 - a 小于或等于 b Line 5 - b 大于或等于 a
논리 연산자
아래 표는 다음과 같습니다. C#에서 지원되는 모든 논리 연산자. 변수 A가 부울 값 true이고 변수 B가 부울 값 false라고 가정하면 다음과 같습니다.
Operator | Description | Instance |
---|---|---|
&& | 을 논리 AND라고 합니다. 연산자. 두 피연산자가 모두 0이 아니면 조건은 참입니다. | (A && B)는 거짓입니다. |
|| | 을 논리 OR 연산자라고 합니다. 두 피연산자 중 하나라도 0이 아니면 조건은 참입니다. | (A || B)는 사실입니다. |
! | 을 논리 NOT 연산자라고 합니다. 피연산자의 논리적 상태를 반전시키는 데 사용됩니다. 논리 NOT 연산자는 조건이 참인 경우 거짓으로 만듭니다. | !(A && B)는 사실입니다. |
예제
C#에서 사용할 수 있는 모든 논리 연산자를 이해하려면 아래 예를 참조하세요.
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { bool a = true; bool b = true; if (a && b) { Console.WriteLine("Line 1 - 条件为真"); } if (a || b) { Console.WriteLine("Line 2 - 条件为真"); } /* 改变 a 和 b 的值 */ a = false; b = true; if (a && b) { Console.WriteLine("Line 3 - 条件为真"); } else { Console.WriteLine("Line 3 - 条件不为真"); } if (!(a && b)) { Console.WriteLine("Line 4 - 条件为真"); } Console.ReadLine(); } } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Line 1 - 条件为真 Line 2 - 条件为真 Line 3 - 条件不为真 Line 4 - 条件为真
Bitwise 연산자
Bitwise 연산자는 비트에 따라 작동하고 비트 단위로 작업을 수행합니다. &, | 및 ^의 실제 값은 다음과 같습니다.
p | q | p & q | p ^ q | |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | |||||||||||||||||||||||||||||||||||||||||||||||
1 | 0 | 1 | 1 | |||||||||||||||||||||||||||||||||||||||||||||||
1 | 1 | 1 | 0 | |||||||||||||||||||||||||||||||||||||||||||||||
0 | 0 | 1 | 1 |
Operator | Description | Instance |
---|---|---|
& | 두 피연산자 모두에 존재하는 경우 동시에 이진 AND 연산자는 결과에 1비트를 복사합니다. | (A & B)는 12, 즉 0000 1100을 제공합니다. |
| | 두 피연산자 중 하나에 있는 경우 이진 OR 연산자는 결과에 1비트를 복사합니다. | (A | B)는 0011 1101인 61을 얻습니다. |
^ | 피연산자 중 하나에만 있고 둘 다에는 없으면 이진 XOR 연산자는 결과가 진행 중입니다. | (A ^ B)는 49, 즉 0011 0001 |
~ | 2의 보수 연산자는 비트를 "뒤집는" 효과가 있는 단항 연산자입니다. | (~A )는 -61, 즉 1100 0011, 2의 보수, 부호 있는 이진수를 제공합니다. |
<< | 이진 왼쪽 시프트 연산자. 왼쪽 피연산자의 값은 오른쪽 피연산자가 지정한 비트 수만큼 왼쪽으로 이동합니다. | A << 2는 240을 얻으며 이는 1111 0000 |
> | 이진 오른쪽 시프트 연산자입니다. 왼쪽 피연산자의 값은 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동합니다. | A >> 2는 15를 얻게 되며 이는 0000 1111 |
예제
C#에서 사용할 수 있는 모든 비트 연산자에 대해 알아보려면 아래 예를 살펴보세요.
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ Console.WriteLine("Line 1 - c 的值是 {0}", c ); c = a | b; /* 61 = 0011 1101 */ Console.WriteLine("Line 2 - c 的值是 {0}", c); c = a ^ b; /* 49 = 0011 0001 */ Console.WriteLine("Line 3 - c 的值是 {0}", c); c = ~a; /*-61 = 1100 0011 */ Console.WriteLine("Line 4 - c 的值是 {0}", c); c = a << 2; /* 240 = 1111 0000 */ Console.WriteLine("Line 5 - c 的值是 {0}", c); c = a >> 2; /* 15 = 0000 1111 */ Console.WriteLine("Line 6 - c 的值是 {0}", c); Console.ReadLine(); } } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
할당 연산자
The 다음 표 목록 C#에서 지원하는 할당 연산자가 종료되었습니다.
Operator | Description | Example | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
= | 간단한 할당 연산자, 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다. | C = A + B는 A + B의 값을 C | ||||||||||||||||||||||||||||||||||||||||||||||||
+= | 에 할당합니다. 더하기 및 할당 연산자는 왼쪽 피연산자에 오른쪽 피연산자를 추가한 결과를 왼쪽 피연산자 | C += A에 해당합니다. C = C + A | ||||||||||||||||||||||||||||||||||||||||||||||||
-= | 뺄셈 및 대입 연산자에서는 왼쪽 피연산자에서 오른쪽 피연산자를 뺀 결과가 왼쪽 피연산자 | C -= A에 할당되며 이는 C = C -와 동일합니다. A | ||||||||||||||||||||||||||||||||||||||||||||||||
*= | 곱셈 및 할당 연산자, 오른쪽 피연산자와 왼쪽 피연산자를 곱한 결과가 왼쪽 피연산자에 할당됩니다. | C *= A는 C = C * A | ||||||||||||||||||||||||||||||||||||||||||||||||
/와 같습니다. = | 나누기 및 할당 연산자는 왼쪽 피연산자를 오른쪽 피연산자로 나눈 결과를 왼쪽 피연산자 | C /= A에 할당합니다. 이는 C = C / A | ||||||||||||||||||||||||||||||||||||||||||||||||
%= | modulo 및 할당 연산자, 두 피연산자의 모듈러스를 찾아 왼쪽 피연산자에 할당합니다. | C %= A는 C = C % A | ||||||||||||||||||||||||||||||||||||||||||||||||
<<= | 왼쪽 시프트 및 할당 연산자 | 와 같습니다. C <<= 2는 C = C < | &=||||||||||||||||||||||||||||||||||||||||||||||||
C &= 2는 C = C & 2 | ^= | |||||||||||||||||||||||||||||||||||||||||||||||||
C ^= 2는 C = C ^ 2 | |= | |||||||||||||||||||||||||||||||||||||||||||||||||
C |= 2는 C = C | 2 |
카테고리 | 연산자 | 연관성 |
---|---|---|
접미사 | () [] -> ++ - - | 왼쪽에서 오른쪽으로 |
1달러 | + - ! - - (유형)* & sizeof | 오른쪽에서 왼쪽으로 |
곱셈과 나눗셈 | * / % | 왼쪽에서 오른쪽으로 |
덧셈과 뺄셈 | + - | 왼쪽에서 오른쪽으로 |
Shift | <>> | 왼쪽에서 오른쪽으로 |
관계 | <= >= | 왼쪽에서 오른쪽으로 |
동등 | = = != | 왼쪽에서 오른쪽으로 |
bit AND AND | & | 왼쪽에서 오른쪽으로 |
bit XOR XOR | ^ | 왼쪽에서 오른쪽으로 |
비트 또는 | 왼쪽에서 오른쪽으로 | |
논리 AND AND | && | 왼쪽에서 오른쪽으로 |
논리 OR OR | || | 왼쪽에서 오른쪽으로 |
조건 | ?: | 오른쪽에서 왼쪽으로 |
할당 | = += -= *= /= %=>>= <<= &= ^= |= | 오른쪽에서 왼쪽으로 |
쉼표 | , | 왼쪽에서 오른쪽으로 |
예제
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 Console.WriteLine("(a + b) * c / d 的值是 {0}", e); e = ((a + b) * c) / d; // (30 * 15 ) / 5 Console.WriteLine("((a + b) * c) / d 的值是 {0}", e); e = (a + b) * (c / d); // (30) * (15/5) Console.WriteLine("(a + b) * (c / d) 的值是 {0}", e); e = a + (b * c) / d; // 20 + (150/5) Console.WriteLine("a + (b * c) / d 的值是 {0}", e); Console.ReadLine(); } } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 나옵니다.
(a + b) * c / d 的值是 90 ((a + b) * c) / d 的值是 90 (a + b) * (c / d) 的值是 90 a + (b * c) / d 的值是 50