HOWTO · C++
C++의 연산자 우선 순위 및 연관성
이 문서에서는 C++ 연산자 우선 순위 및 연관성에 대해 설명합니다.
이 페이지의 내용
이 문서에서는 C++의 연산자와 식에서 사용될 때 연산자가 평가되는 방법에 대해 설명합니다. 조작에 대한 특정 규칙이 있으므로 C++ 연산자를 사용한 표현식 평가에 대해 알아보기 위해 이를 살펴보겠습니다.
C++의 연산자
연산자는 변수와 값을 조작하는 데 사용되는 기호입니다. 예를 들어 + 및 - 연산자는 더하기 및 빼기에 사용됩니다.
C++에서 연산자는 4가지 범주로 세분됩니다.
- 산술 연산자
- 할당 연산자
- 관계 연산자
- 논리 연산자
산술 연산자
이러한 연산자는 일부 데이터에 대해 다른 산술 연산을 수행하는 데 사용됩니다. 예를 들어 *는 두 개 이상의 숫자 또는 변수를 곱하는 데 사용됩니다.
수많은 산술 연산자가 아래에 나열되어 있습니다.
| 연산자 기호 | 설명 |
|---|---|
+ |
더하기 연산자 |
- |
빼기 연산자 |
* |
곱하기 연산자 |
/ |
나눗셈 연산자 |
% |
모듈러스 연산자 (나누기 연산 후 나머지) |
할당 연산자
이러한 연산자는 특정 값을 변수에 할당할 수 있습니다. =는 대입 연산자입니다. 아래 예를 고려하십시오.
int a;
a = 5;
여기서 a에는 할당 연산자 =를 사용하여 5 값이 할당됩니다. 아래에 나열된 다른 할당 연산자도 있습니다.
| 운영자 | 동등한 진술 |
|---|---|
a += 5 |
a = +5 |
a -= 5 |
a = a-5 |
a *= 5 |
a = a*5 |
a /= 5 |
a = a /5 |
%= 5 |
a = a%5 |
관계 연산자
관계 연산자는 2개의 값 또는 피연산자를 비교하는 데 사용됩니다. 관계가 참으로 평가되면 1 값을 반환하고 거짓으로 평가되면 0을 반환합니다.
C++에서는 여러 관계 연산자가 사용됩니다.
| 운영자 | 설명 |
|---|---|
<, > |
보다 큼 및 보다 작음 |
<=, >= |
작거나 같음, 크거나 같음 |
== |
같음 |
!= |
같지 않음 |
논리 연산자
논리 연산자는 식이 참인지 거짓인지 평가할 수 있습니다. true인 경우 반환된 결과는 1입니다. 그렇지 않으면 0.
다음과 같은 여러 논리 연산자가 있습니다.
| 연산자 | 설명 |
|---|---|
&& |
AND 연산자. 모든 식이 참이면 참을 반환합니다. |
| ` | |
! |
연산자가 아닙니다. 표현식이 거짓이면 true를 반환합니다. |
C++의 연산자 우선 순위 및 연관성
둘 이상의 연산자가 있는 표현식이 있는 경우 표현식은 연산자의 우선 순위에 따라 평가됩니다. 우선 순위는 연산자의 우선 순위와 먼저 평가되는 연산자를 정의합니다.
아래 예를 고려하십시오.
a = 3 * 5 / 2 + 3
이제 이 표현식에서 어떤 연산자를 먼저 조작할 것인지는 연산자의 우선 순위에 따라 결정됩니다.
연산자 우선 순위 목록은 아래 표에 나와 있습니다.
이제 특정 연산자가 동일한 우선 순위 수준을 갖는 것을 볼 수 있습니다. 동일한 우선 순위 수준을 가진 이러한 연산자가 있는 식은 결합성 규칙을 사용하여 평가됩니다.
연관성은 동일한 우선 순위 수준에서 평가할 연산자의 순서를 정의합니다. 다음은 연산자의 연관성을 설명하는 표입니다.
C++ 표현식의 암시적 유형 변환
식에 혼합 유형 변수가 있는 경우 컴파일러는 연산 및 피연산자의 데이터 유형에 따라 자동으로 유형 변환을 수행합니다. 예를 들어 다음 코드 스니펫을 고려하십시오.
int a = 2, b = 3, c = 5;
double f = 4.5;
double res = a + b / f + c;
코드의 마지막 줄에서 세 개의 변수가 int 유형이고 하나는 double 유형임을 알 수 있습니다. 연산자 우선 순위에 따라 /가 가장 먼저 평가됩니다. 이 식에서 b/f는 int를 double로 나눈 결과가 double로 변환됨을 의미합니다.
그 후 +는 int 및 double에 대해 평가되므로 결과는 double로 변환됩니다. 따라서 res는 이중 데이터 유형이 됩니다.
여기에서 표현식의 결과가 항상 표현식에 포함된 더 높은 데이터 유형으로 승격되는 것을 볼 수 있습니다.
int + double = > double + double = double int* double =
> double* double = double double* int =
> double* double = double int / double =
> double / double =
double double / int =
> double / double =
double int / int = int
혼합 유형 표현식의 경우 유형이 더 높은 데이터 유형으로 승격되는 방식을 위의 표현식에서 볼 수 있습니다.