연산자 우선순위 및 결합순서
컴퓨터언어는 개발자를 비롯한 컴퓨터 과학/공학자들의 요구에
따라 다양하게 진화되었다. 최대한 인간의 일반적인 사고를 바탕에 두고 문법과 체계를 만든 것이지만, 아무래도 언어 개발자들의
마인드가 포함되어 있어 일반에게는 약간 어렵기도 한 것 같다. 다음은 C++ 연산자 우선순위표이다. 이것을 잘 알아야, 복잡한
포인터와 구조체, 배열이 섞인 복잡해 보이는 식도 기계적으로 풀어낼 수 있다. 그러므로 다음은 반드시 암기 가능하면 이해할
사항이다.
간략본(http://www.winapi.co.kr/clec/cpp1/5-4-1.htm)
순위 |
연산자 |
결합순서 |
1 |
( ) [ ] -> . |
왼쪽 우선 |
2 |
! ~ ++ -- + -(부호) *(포인터) & sizeof 캐스트 |
오른쪽 우선 |
3 |
*(곱셈) / % |
왼쪽 우선 |
4 |
+ -(덧셈, 뺄셈) |
왼쪽 우선 |
5 |
<< >> |
왼쪽 우선 |
6 |
< <= > >= |
왼쪽 우선 |
7 |
== != |
왼쪽 우선 |
8 |
& |
왼쪽 우선 |
9 |
^ |
왼쪽 우선 |
10 |
| |
왼쪽 우선 |
11 |
&& |
왼쪽 우선 |
12 |
|| |
왼쪽 우선 |
13 |
? : |
오른쪽 우선 |
14 |
= 복합대입 |
오른쪽 우선 |
15 |
, |
왼쪽 우선 |
상세본(http://www.cppreference.com/operator_precedence.html)
자바(http://www.tech-faq.com/lang/ko/java-operator-precedence.shtml)
자바 연산자 우선순위는 자바를 결정하는 방법을 평가 연산자를 사용하여 첫 번째합니다.
In this chart, operator precedence is displayed from highest precedence to lowest precedence. 이 차트, 연산자를 우선 순위가 높은 우선 순위가 낮은 우선순위를 표시합니다.
우선순위 | 연산자 | 기능 | 결합순서 |
---|---|---|---|
1 | [] |
Array index 어레이 색인 | Left to Right |
() |
Method call 메서드 호출 | ||
. |
Member access 회원에 액세스 | ||
2 | ++ |
Prefix or postfix increment 접두사 또는 postfix 증감 | Right to Left |
-- |
Prefix or postfix decrement 접두사 또는 postfix 감소 | ||
+ - |
Unary plus, minus 단항 플러스, 마이너스 | ||
~ |
Bitwise NOT 비트없는 | ||
! |
Boolean (logical) NOT 부울 (논리) | ||
(type) |
Type cast 유형 캐스트 | ||
new |
Object creation 개체를 창출 | ||
3 | * / % |
Multiplication, division, remainder 곱셈, 부서, 나머지 | Left to Right |
4 | + - |
Addition, subtraction 또한 뺄셈 | Left to Right |
+ |
String concatenation 문자열 연결 | ||
5 | << |
Signed bit shift left to right 서명 비트 교대 왼쪽에서 오른쪽으로 | Left to Right |
>> |
Signed bit shift right to left 서명 비트 교대 오른쪽에서 왼쪽으로 | ||
>>> |
Unsigned bit shift right to left 오른쪽에서 왼쪽으로 서명되지 않은 비트 교대 | ||
6 | < <= |
Less than, less than or equal to 미만, 이하 같음 | Left to Right |
> >= |
Greater than, greater than or equal to 보다 큼, 크거나 같음 | ||
instanceof |
Reference test 참조 테스트 | ||
7 | == |
Equal to 같음 | Left to Right |
!= |
Not equal to 같지 않음 | ||
8 | & |
Bitwise AND 비트 및 | Left to Right |
& & |
Boolean (logical) AND 부울 (논리)과 | ||
9 | ^ |
Bitwise XOR 비트 xor | Left to Right |
^ |
Boolean (logical) XOR 부울 (논리) xor | ||
10 | | |
Bitwise OR 비트 또는 | Left to Right |
| |
Boolean (logical) OR 부울 (논리) 또는 | ||
11 | && |
Boolean (logical) AND 부울 (논리)과 | Left to Right |
12 | || |
Boolean (logical) OR 부울 (논리) 또는 | Left to Right |
13 | ? : |
Conditional 조건부 | Right to Left |
14 | = |
Assignment 과제 | Right to Left |
*= /= += -= %= <<= >>= >>>= &= ^= |= |
Combinated assignment 임무는 combinated (operation and assignment) (작업과 배정) |
Notes: 참고 사항 :
- Expressions inside parentheses are evaluated first 괄호 안에 표현을 평가할 수있습니다 첫 번째
- Nested parentheses are evaluated from the innermost parentheses to the outermost parenthesis. 중첩된 괄호는 괄호를 안쪽에서 바깥쪽 괄호을 평가합니다.
- Operators in the same row in the chart have equal precedence. 차트에서와 같은 행에 연산자를 우선 순위가 동일합니다.
참고
- 이쪽 블로그를 보면 연산자 우선 순위에 대한 여러 생각들을 정리해 놓았다
출 처 : http://learder.tistory.com/827019