산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 연산자 우선 순위 및 연관성

C# 연산자 우선 순위 및 연관성

이 자습서에서는 C#의 연산자 우선 순위 및 연결성에 대해 배웁니다. 이를 통해 C# 컴파일러에서 표현식을 평가하는 방법을 알 수 있습니다.

C# 연산자 우선순위

연산자 우선 순위는 표현식이 평가되는 방식을 정의하는 일련의 규칙입니다. C#에서 각 C# 연산자에는 할당된 우선 순위가 있으며 이러한 우선 순위에 따라 표현식이 평가됩니다.

예를 들어 , 곱셈의 우선 순위 (*) 연산자는 (+) 덧셈의 우선 순위보다 높습니다. 운영자. 따라서 곱셈을 포함하는 연산은 더하기 전에 수행됩니다.

아래 진술을 살펴보십시오.

int x = 4 + 3 * 5;

x의 값은 무엇입니까? 이 문장을 실행한 후?

피연산자 3 +과(와) 연결되어 있습니다. 및 * . 앞서 언급했듯이 곱셈은 덧셈보다 우선 순위가 높습니다. 따라서 작업 3 * 5 4 + 3 대신 수행됩니다. . 변수 x의 값 19가 됩니다. .

추가의 우선 순위가 더 높은 경우 4 + 3 먼저 평가되고 x35 .

<시간>

연산자 우선 순위 표

연산자의 우선 순위가 높을수록 테이블에 더 높게 나타납니다.

C# 연산자 우선 순위
카테고리 운영자
후위 증가 및 감소 ++, --
접두사 증가, 감소 및 단항 ++, --, +, -, !, ~
승법 *, /, %
첨가제 +, -
시프트 <<,>>
관계형 <, <=,>,>=
평등 ==, !=
비트 AND &
비트 XOR ^
비트 OR |
논리 AND &&
논리적 OR ||
삼항 ? :
과제 =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=,>>=

할당 연산자의 우선 순위가 가장 낮고 접미사 증가 및 감소 연산자의 우선 순위가 가장 높습니다.

<시간>

예시 1:연산자 우선순위

using System;

namespace Operator
{
	class OperatorPrecedence
	{
		public static void Main(string[] args)
		{
			int result1;
			int a = 5, b = 6, c = 4;
			result1 = --a * b - ++c;
			Console.WriteLine(result1);

			bool result2;
			result2 = b >= c + a;
			Console.WriteLine(result2);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

19
False

프로그램에서 표현식이 어떻게 평가되는지 이해합시다.

--의 우선순위 및 ++ *보다 높음 , 및 *의 우선 순위 -보다 높음 . 따라서 진술,

result1 = --a * b - ++c;

와 동일합니다.

result1 = ((--a)*b)-(++c);

괄호 안의 표현식은 외부 연산자의 우선 순위에 관계없이 항상 먼저 평가됩니다.

다음 표현식에서 +의 우선순위 >=보다 높음 . 따라서 ca 먼저 추가되고 합계가 b와 비교됩니다. false 생성 .

<시간>

C#에서 연산자의 연관성

이전 섹션에서 연산자 우선 순위에 대해 논의했습니다. 우선 순위가 다른 두 연산자를 사용하는 경우 우선 순위가 높은 연산자가 먼저 평가됩니다.

하지만 두 연산자의 우선 순위가 같으면 어떻게 될까요?

이 경우 연산자의 연관성(왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽)에 따라 표현식이 평가됩니다.

예:

int a = 5, b = 6, c = 3;
int result = a * b / c;

여기서 */ 동일한 우선 순위를 갖습니다. 그러나 이러한 연산자의 연관성은 왼쪽에서 오른쪽으로 있기 때문에 , a * b 먼저 평가한 다음 나눗셈을 수행합니다. 이 표현식의 최종 결과는 10입니다. .

이 특정 예에서 연관성은 실제로 중요하지 않습니다. 곱하기 전에 나눗셈을 수행하더라도 결과에 영향을 미치지 않기 때문입니다.

다른 예를 살펴보겠습니다.

int a = 5, b = 6, c = 3;
a = b = c;

=의 연관성 연산자는 오른쪽에서 왼쪽입니다. . 따라서 c의 값은 (예:3 )는 b에 할당됩니다. , 그리고 ba에 할당됨 . 따라서 이 명령문을 실행한 후 a 값은 , bc 3이 됩니다. .

아래 표는 C# 연산자의 연관성을 보여줍니다.

C# 연산자의 연관성
카테고리 운영자 연관성
후위 증가 및 감소 ++, -- 왼쪽에서 오른쪽으로
접두사 증가, 감소 및 단항 ++, --, +, -, !, ~ 오른쪽에서 왼쪽
승법 *, /, % 왼쪽에서 오른쪽으로
첨가제 +, - 왼쪽에서 오른쪽으로
시프트 <<,>> 왼쪽에서 오른쪽으로
관계형 <, <=,>,>= 왼쪽에서 오른쪽으로
평등 ==, != 왼쪽에서 오른쪽으로
비트 AND & 왼쪽에서 오른쪽으로
비트 XOR ^ 왼쪽에서 오른쪽으로
비트 OR | 왼쪽에서 오른쪽으로
논리 AND && 왼쪽에서 오른쪽으로
논리적 OR || 왼쪽에서 오른쪽으로
삼항 ? : 오른쪽에서 왼쪽
과제 =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=,>>= 오른쪽에서 왼쪽

거의 모든 연산자는 왼쪽에서 오른쪽으로 연관성이 있습니다. 오른쪽에서 왼쪽으로 연관성이 있는 연산자는 다음과 같습니다.

<시간>

예시 2:연산자의 연관성

using System;
 
namespace Operator
{
	class OperatorPrecedence
	{
		public static void Main(string[] args)
		{
			int a = 5, b = 6, c = 3;
			int result = a * b / c;
			Console.WriteLine(result);

			a = b = c;
			Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

10
a = 3, b = 3, c = 3

C 언어

  1. C# 키워드 및 식별자
  2. C# 연산자
  3. C# 삼항(? :) 연산자
  4. C# 클래스 및 개체
  5. C# 추상 클래스 및 메서드
  6. C# 부분 클래스 및 부분 메서드
  7. C# 봉인된 클래스 및 메서드
  8. 예제가 있는 C++의 연산자:정의, 유형 및 프로그램
  9. C - 상수 및 리터럴
  10. C - 입력 및 출력