English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ 의 연산자 우선순위와 연관성을 이해하겠습니다

이 튜토리얼에서, 예제를 통해 C ++내 연산자의 우선순위와 연관성

C ++의 연산자 우선순위

단일 표현식에 여러 연산자가 있으면 동시에 평가되지 않습니다. 대신,높은 우선순위의 연산자는 먼저 연산을 평가합니다.

예를 들어,

int x = 5 - 17 * 6;

이곳에서, 곱셈 연산자 * 의 우선순위는 뺄셈 연산자보다 높습니다 - 따라서,17 * 6먼저 평가가 먼저 수행됩니다.

결과, 이 표현식은

int x = 5 - (17 * 6);

우리가 먼저 평가를 수행하고 싶다면5 - 17그러면, 그들을구간 내:

int x = (5 - 17) * 6;

예제1의 연산자 우선순위

#include <iostream>
using namespace std;
int main() {
  // 먼저 평가17 * 6
  int num1 = 5 - 17 * 6;
  //와 num1동등한 표현식
  int num2 = 5 - (17 * 6);
  //강제 컴파일러가 먼저 평가5-17
  int num3 = (5 - 17) * 6;
  cout << \1 = " << num1 << endl;
  cout << \2 = " << num2 << endl;
  cout << \3 = " << num3 << endl;
  return 0;
}

출력 결과

num1 = -97
num2 = -97
num3 = -72

주의:C의 ++중에는 여러 가지 우선순위를 가진 연산자가 많기 때문에, 권장합니다.괄호코드의 가독성을 높입니다.

C ++연산자 우선순위 표

다음 표는 C ++연산자의 우선순위. 우선순위1가장 높은 우선순위를 가진 연산자를 나타냅니다. 우선순위17가장 낮은 우선순위를 가진 연산자를 나타냅니다.

우선순위
연산자
설명결합律
1::범위왼쪽에서 오른쪽
2a++
a--
type( )
type{ }
a( )
a[ ]
.
->
후속/후속 증가
후속/후속 감소

함수 스타일 변환

함수 스타일 변환

함수 호출
인덱스
객체에서 멤버에 접근
객체 ptr에서 멤버에 접근
왼쪽에서 오른쪽
3++a
--a
+a
-a
!
~
(type)
*a
&a
sizeof
co_await
new new[ ]
delete delete[]
접두사 증가
접두사 감소


논리적 비
비트 비
C 스타일 변환
간접(해제)
주소를 가져오기
크기를 가져오기
await 표현식
동적 메모리 할당
동적 메모리 해제
오른쪽에서 왼쪽
4.*
->*

멤버 객체 선택자

멤버 포인터 선택자

왼쪽에서 오른쪽
5a * b
a / b
a % b

곱하기

나누기

나머지를 뺄

왼쪽에서 오른쪽
6a + b
a - b
더하기
왼쪽에서 오른쪽
7<<
>>

비트 왼쪽 이동

비트 오른쪽 이동

왼쪽에서 오른쪽
8<=>삼각 비교 연산자왼쪽에서 오른쪽
9<
<=
>
>=
작다
작거나 같다
크다
크거나 같다
왼쪽에서 오른쪽
10==
!=

같다

다를

왼쪽에서 오른쪽
11&비트 앤드왼쪽에서 오른쪽
12^비트 이퀄왼쪽에서 오른쪽
13|비트 이거나왼쪽에서 오른쪽
14&&논리적과왼쪽에서 오른쪽
15||논리적 이거나왼쪽에서 오른쪽
16a ? b : c
throw
co_yield
=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=
삼항 조건 연산
throw 연산자
yield 표현식(C++ 20)
할당
더하기 연산자
뺄 연산자
곱셈 연산자
곱셈 분배
모듈러 연산자
비트 왼쪽 이동 연산자
비트 오른쪽 이동 연산자
비트 앤드 연산자
비트 이퀄 연산자
비트 이동 연산자
오른쪽에서 왼쪽
17,쉼표 연산자왼쪽에서 오른쪽

연관속성이 나중에 논의될 것입니다.

C ++연산자의 연관성

연산자의 연관성은 표현식을 계산하는방향예를 들어,

int a = 1;
int b = 4;
// a = 4
a = b;

a=을 보세요=4;문장. = 연산자의 연관성은 오른쪽에서 왼쪽입니다. 따라서 b의 값이 a에 할당됩니다.

동일하게, 여러 연산자는 같은 우선순위를 가질 수 있습니다(위 표에서 보면). 표현式中 동일한 우선순위를 가진 여러 연산자를 사용할 때, 그들은 그들의연관성그들을 계산합니다.

int a = 1;
int b = 4;
b += a -= 6;

연산자+=와-=-연산자는 같은 우선순위를 가집니다. 이 연산자들의 연관성은 오른쪽에서 왼쪽으로 이루어지므로, 이는 마지막 문장의 계산 방식입니다.

  • a -= 6 먼저 평가됩니다. 따라서 a는-5

  • 그런 다음, b += -5평가될 것입니다. 따라서 b는-1

예제2:연산자의 연결성

#include <iostream>
using namespace std;
int main() {
  int a = 1;
  int b = 4;
// a -= 6 먼저 평가를 수행합니다
  b += a -= 6;
  cout << "a = " << a << endl; ;
  cout << "b = " << b;
}

출력 결과

a = -5
b = -1