English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서, 예제를 통해 C ++내 연산자의 우선순위와 연관성
단일 표현식에 여러 연산자가 있으면 동시에 평가되지 않습니다. 대신,높은 우선순위의 연산자는 먼저 연산을 평가합니다.
예를 들어,
int x = 5 - 17 * 6;
이곳에서, 곱셈 연산자 * 의 우선순위는 뺄셈 연산자보다 높습니다 - 따라서,17 * 6먼저 평가가 먼저 수행됩니다.
결과, 이 표현식은
int x = 5 - (17 * 6);
우리가 먼저 평가를 수행하고 싶다면5 - 17그러면, 그들을구간 내:
int x = (5 - 17) * 6;
#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 ++연산자의 우선순위. 우선순위1가장 높은 우선순위를 가진 연산자를 나타냅니다. 우선순위17가장 낮은 우선순위를 가진 연산자를 나타냅니다.
우선순위 | 연산자 | 설명 | 결합律 |
---|---|---|---|
1 | :: | 범위 | 왼쪽에서 오른쪽 |
2 | a++ a-- type( ) type{ } a( ) a[ ] . -> | 후속/후속 증가 후속/후속 감소 함수 스타일 변환 함수 스타일 변환 함수 호출인덱스 객체에서 멤버에 접근 객체 ptr에서 멤버에 접근 | 왼쪽에서 오른쪽 |
3 | ++a --a +a -a ! ~ (type) *a &a sizeof co_await new new[ ] delete delete[] | 접두사 증가 접두사 감소 양 음 논리적 비 비트 비 C 스타일 변환 간접(해제) 주소를 가져오기 크기를 가져오기 await 표현식 동적 메모리 할당 동적 메모리 해제 | 오른쪽에서 왼쪽 |
4 | .* ->* | 멤버 객체 선택자 멤버 포인터 선택자 | 왼쪽에서 오른쪽 |
5 | a * b a / b a % b | 곱하기 나누기 나머지를 뺄 | 왼쪽에서 오른쪽 |
6 | a + b a - b | 더하기 뺄 | 왼쪽에서 오른쪽 |
7 | << >> | 비트 왼쪽 이동 비트 오른쪽 이동 | 왼쪽에서 오른쪽 |
8 | <=> | 삼각 비교 연산자 | 왼쪽에서 오른쪽 |
9 | < <= > >= | 작다 작거나 같다 크다 크거나 같다 | 왼쪽에서 오른쪽 |
10 | == != | 같다 다를 | 왼쪽에서 오른쪽 |
11 | & | 비트 앤드 | 왼쪽에서 오른쪽 |
12 | ^ | 비트 이퀄 | 왼쪽에서 오른쪽 |
13 | | | 비트 이거나 | 왼쪽에서 오른쪽 |
14 | && | 논리적과 | 왼쪽에서 오른쪽 |
15 | || | 논리적 이거나 | 왼쪽에서 오른쪽 |
16 | a ? b : c throw co_yield = += -= *= /= %= <<= >>= &= ^= |= | 삼항 조건 연산 throw 연산자 yield 표현식(C++ 20) 할당 더하기 연산자 뺄 연산자 곱셈 연산자 곱셈 분배 모듈러 연산자 비트 왼쪽 이동 연산자 비트 오른쪽 이동 연산자 비트 앤드 연산자 비트 이퀄 연산자 비트 이동 연산자 | 오른쪽에서 왼쪽 |
17 | , | 쉼표 연산자 | 왼쪽에서 오른쪽 |
연관속성이 나중에 논의될 것입니다.
연산자의 연관성은 표현식을 계산하는방향예를 들어,
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
#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