C# 튜토리얼login
C# 튜토리얼
작가:php.cn  업데이트 시간:2022-04-11 14:06:23

C# 연산자


C# Operators

연산자는 컴파일러에게 특정 수학 또는 논리 연산을 수행하도록 지시하는 기호입니다. C#에는 다음과 같이 분류되는 다양한 내장 연산자가 있습니다.

  • 산술 연산자

  • 관계 연산자

  • 논리 연산자

  • 비트 연산자

  • 할당 연산자

  • 기타 연산자

이 튜토리얼에서는 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 할당 연산자 및 기타 연산자를 하나씩 설명합니다.

산술 연산자

다음 표에서는 C#에서 지원하는 모든 산술 연산자를 보여줍니다. 변수 A의 값이 10이고 변수 B의 값이 20이라고 가정하면 다음과 같습니다.

을 얻습니다.
OperatorDescriptionExample
+두 피연산자를 추가합니다 에이 + B는 30
- 첫 번째 피연산자에서 두 번째 피연산자 를 뺍니다 A - B는 -10
* 두 피연산자를 곱합니다 A * B는 200
/분자를 분모로 나누면 B / A는 2
%모듈로 연산자, 정수 나누기 후 나머지B % A는 0
++증분을 얻습니다. 연산자, 정수 값을 1A++ 증가시키면 11
--감소 연산자, 정수 값을 1A만큼 감소-- 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이라고 가정하면,

OperatorDescriptionExample
==값이 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라고 가정하면 다음과 같습니다.

OperatorDescriptionInstance
&&을 논리 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 연산자는 비트에 따라 작동하고 비트 단위로 작업을 수행합니다. &, | 및 ^의 실제 값은 다음과 같습니다.

0011

A = 60, B = 13이라고 가정하고 이제 이진수 형식으로 표현하면 다음과 같습니다.

A = 0011 1100

B = 0000 1101

------------ ----

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

다음 표에는 C#에서 지원하는 비트 연산자가 나열되어 있습니다. 변수 A의 값이 60이고 변수 B의 값이 13이라고 가정하면 다음과 같습니다.

pqp & qp ^ q
00 00
1011
1110
00 11
OperatorDescriptionInstance
&두 피연산자 모두에 존재하는 경우 동시에 이진 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#에서 지원하는 할당 연산자가 종료되었습니다.

&=비트별 AND와 동일하며 할당 연산자C &= 2는 C = C & 2^=비트별 XOR과 동일합니다. 할당 연산자C ^= 2는 C = C ^ 2|=비트 OR과 동일하며 할당 연산자C |= 2는 C = C | 2

예제

C#에서 사용할 수 있는 모든 할당 연산자에 대해 알아보려면 아래 예를 살펴보세요.

using System;

namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 21;
            int c;

            c = a;
            Console.WriteLine("Line 1 - =  c 的值 = {0}", c);

            c += a;
            Console.WriteLine("Line 2 - += c 的值 = {0}", c);

            c -= a;
            Console.WriteLine("Line 3 - -=  c 的值 = {0}", c);

            c *= a;
            Console.WriteLine("Line 4 - *=  c 的值 = {0}", c);

            c /= a;
            Console.WriteLine("Line 5 - /=  c 的值 = {0}", c);

            c = 200;
            c %= a;
            Console.WriteLine("Line 6 - %=  c 的值 = {0}", c);

            c <<= 2;
            Console.WriteLine("Line 7 - <<=  c 的值 = {0}", c);

            c >>= 2;
            Console.WriteLine("Line 8 - >>=  c 的值 = {0}", c);

            c &= 2;
            Console.WriteLine("Line 9 - &=  c 的值 = {0}", c);

            c ^= 2;
            Console.WriteLine("Line 10 - ^=  c 的值 = {0}", c);

            c |= 2;
            Console.WriteLine("Line 11 - |=  c 的值 = {0}", c);
            Console.ReadLine();
        }
    }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Line 1 - =     c 的值 = 21
Line 2 - +=    c 的值 = 42
Line 3 - -=    c 的值 = 21
Line 4 - *=    c 的值 = 441
Line 5 - /=    c 的值 = 21
Line 6 - %=    c 的值 = 11
Line 7 - <<=    c 的值 = 44
Line 8 - >>=    c 的值 = 11
Line 9 - &=    c 的值 = 2
Line 10 - ^=    c 的值 = 0
Line 11 - |=    c 的值 = 2

기타 연산자

목록에 있음 아래 C#에서 지원하는 다른 중요한 연산자로는 sizeof, typeof?가 있습니다. 연산자 설명 예시 sizeof()는 데이터 유형의 크기를 반환합니다. sizeof(int)는 4를 반환합니다. typeof()는 클래스 유형을 반환합니다. typeof(StreamReader); &는 변수의 주소를 반환합니다. &a;는 변수의 실제 주소를 가져옵니다. *변수에 대한 포인터. *a; 변수를 가리킵니다. ?: 조건이 참이면 조건식 X: 그렇지 않으면 Y is는 객체가 특정 유형인지 여부를 결정합니다. If( Ford is Car) // Ford가 Car 클래스의 객체인지 확인합니다. 캐스트이므로 변환이 실패하더라도 예외가 발생하지 않습니다. Object obj = new StringReader("Hello");

StringReader r = obj as StringReader;
Example

using System;

namespace OperatorsAppl
{
    
   class Program
   {
      static void Main(string[] args)
      {
         
         /* sizeof 运算符的实例 */
         Console.WriteLine("int 的大小是 {0}", sizeof(int));
         Console.WriteLine("short 的大小是 {0}", sizeof(short));
         Console.WriteLine("double 的大小是 {0}", sizeof(double));
         
         /* 三元运算符符的实例 */
         int a, b;
         a = 10;
         b = (a == 1) ? 20 : 30;
         Console.WriteLine("b 的值是 {0}", b);

         b = (a == 10) ? 20 : 30;
         Console.WriteLine("b 的值是 {0}", b);
         Console.ReadLine();
      }
   }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

int 的大小是 4
short 的大小是 2
double 的大小是 8
b 的值是 30
b 的值是 20

C#의 연산자 우선순위

The 연산자의 우선순위에 따라 표현식의 용어 조합이 결정됩니다. 이는 표현식이 평가되는 방식에 영향을 미칩니다. 일부 연산자는 다른 연산자보다 우선순위가 높습니다. 예를 들어 곱셈 및 나눗셈 연산자는 덧셈 및 뺄셈 연산자보다 우선순위가 높습니다.

예를 들어 x = 7 + 3 * 2, 여기서 x에는 20 대신 13이라는 값이 할당됩니다. 왜냐하면 * 연산자가 +보다 우선순위가 높기 때문에 곱셈 3*2가 먼저 계산된 다음 7이 더해지기 때문입니다. .

다음 표에는 연산자 우선 순위가 높은 순서대로 나열되어 있습니다. 우선 순위가 높은 연산자는 표 위에 표시되고 우선 순위가 낮은 연산자는 표 아래에 표시됩니다. 표현식에서는 우선순위가 높은 연산자가 먼저 평가됩니다.

OperatorDescriptionExample
=간단한 할당 연산자, 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다.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 <
카테고리 연산자 연관성
접미사 () [] -> ++ - - 왼쪽에서 오른쪽으로
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

PHP 중국어 웹사이트