[프로그래밍언어, C] 포인터 변수와 연산자 우선순위
2017. 3. 12. 17:02ㆍ9급 공무원/컴퓨터 일반
책이 따로 한 권이 나와있을 정도로 포인터는 C언어에서 매우 중요하면서도 가장 헷갈리는 개념이다.
포인터연산자의 우선순위는 어디 쯤일까?
Symbol1 | 연산 형식 | 결합성 |
---|---|---|
[ ] ( ) . –>후위 ++ 및 후위 –– | 식 | 왼쪽에서 오른쪽 |
전위 ++ 및 전위 –– sizeof & * + – ~ ! | 단항 | 오른쪽에서 왼쪽 |
형식 캐스팅 | 단항 | 오른쪽에서 왼쪽 |
* / % | 곱하기 | 왼쪽에서 오른쪽 |
+ – | 더하기 | 왼쪽에서 오른쪽 |
<< >> | 비트 시프트 | 왼쪽에서 오른쪽 |
< > <= >= | 관계 | 왼쪽에서 오른쪽 |
== != | 같음 | 왼쪽에서 오른쪽 |
& | 비트 AND | 왼쪽에서 오른쪽 |
^ | 비트 제외 OR | 왼쪽에서 오른쪽 |
| | 비트 포함 OR | 왼쪽에서 오른쪽 |
&& | 논리 AND | 왼쪽에서 오른쪽 |
|| | 논리 OR | 왼쪽에서 오른쪽 |
? : | 조건식 | 오른쪽에서 왼쪽 |
= *= /= %= += –= <<= >>=&= ^= |= | 단순 및 복합 할당2 | 오른쪽에서 왼쪽 |
, | 순차적 계산 | 왼쪽에서 오른쪽 |
연산자는 내림차순 우선 순위로 나열됩니다. 여러 연산자가 같은 줄 또는 그룹에 표시된 경우, 해당 연산자는 우선 순위가 같습니다.
모든 단순 및 복합 할당 연산자의 우선 순위는 같습니다.
(출처 : https://msdn.microsoft.com/ko-kr/library/2bxt6kc4.aspx )
위에서 볼 수 있듯. 포인터 연산자는 단항연산자로 표에서 두번째에 위치하고 있다. 즉, 매우 우선순위가 높다는 뜻. 그렇기 때문에 포인터변수보다 먼저 연산하는 연산자는 후위 증감연산자(++,--) 뿐이다.(1) 그래서 후위연산으로 포인터 변수가 가리키는 값을 증가시키기 위해서는 포인터 변수를 괄호로 묶어주어야 한다.(2) 전위 증감연산자는 포인터 연산자와 우선순위가 같기 때문에 변수에 가까이 있는 연산자 순으로 계산이 진행된다. (3)(4)
ex)
(1) *ptr++ > *(ptr++)
(2) (*ptr)++
(3) ++*ptr > ++(*ptr)
(4) *++ptr > *(++ptr)
'9급 공무원 > 컴퓨터 일반' 카테고리의 다른 글
[데이터통신] 공개키 기반구조(PKI) 구성요소 (0) | 2017.12.13 |
---|---|
[프로그래밍언어, C] Type Casting(타입캐스팅, 형 변환) (0) | 2017.03.12 |
[인터넷] Ajax(Asynchronous Javascript and XML) (0) | 2017.03.10 |
[인터넷] P3P(Platform for Privacy Preferences) (0) | 2017.03.10 |
[인터넷] 웹 캐시(Web Cache) (0) | 2017.03.10 |