728x90
(1) 전위 연산자
- 전위 연산자
- ++변수, --변수
- 증감 이후에 해당 문장을 실행
(2) 후위 연산자
- 후위 연산자
- 변수++, 변수--
- 해당 문장을 실행하고 증감
(3) printf 출력 순서
컴파일러에 따라 다르지만, 기본적인 컴파일러에 의하면 printf 함수는 뒤에서부터 값을 배정한다.
이게 무슨 말인가 하면, 아래의 예제를 통해 알아보자.
#include <stdio.h>
int main() {
int i = 5;
printf("%d %d %d %d", i++, ++i, i++, ++i);
return 0;
}
위와 같은 코드에서 서식 지정자인 %d의 출력을 위해서 i의 증감 연산자의 계산이 필요하다.
그런데 사전에 학습한 증감 연산자를 이용하여 앞에서부터(=>) 연산하면 5, 7, 7, 9로 계산할 수 있다.
그러나 컴파일러에 따라 printf는 뒤에서부터(<=) 연산한다.
뒤에서부터 연산을 해 보자.
- printf("%d %d %d %d", i++, ++i, i++, ++i)
- i의 값이 선 증가를 하여 6이 된다.
- i 값의 증가만 한 상태이며, 어떠한 값이 나올지는 모른다.
- 즉, 전위 연산자는모든 연산이 끝난 최종적인 i값을 참조한다.
- printf("%d %d %d %d", i++, ++i, i++,++i)
- 현재의 i값을 참조하여 6을 출력한다.
- i의 값이 증가하여 7이 된다.
- printf("%d %d %d %d", i++, ++i, i++,++i)
- i의 값이 선 증가를 하여 8이 된다.
- i 값의 증가만 한 상태이며, 어떠한 값이 나올지는 모른다.
- 즉, 전위 연산자는 모든 연산이 끝난 최종적인 i값을 참조한다.
- printf("%d %d %d %d", i++, ++i, i++,++i)
- 현재의 i값을 참조하여 8을 출력한다.
- i값이 증가하여 9가 된다.
- printf("%d %d %d %d", i++, ++i, i++,++i)
- 후위 연산자를 사용한 i++들은 연산 이전의 값을 참조하여 출력한다.
- 전위 연산자를 사용한 ++i들은 모든 연산이 끝난 이후의 값을 참조하여 출력한다.
- 즉, 8 9 6 9를 출력
해당 내용을 모르는 상태에서 정처기 시험에 이러한 유형의 문제가 나오면 아마 무조건 틀렸을 것이다.
🍉 참고
반응형
'Language > C' 카테고리의 다른 글
[C언어] 인수 전달 방법 (0) | 2024.04.16 |
---|---|
[C언어] 포인터의 연산 (0) | 2024.04.16 |
[C언어] 포인터와 구조체 (0) | 2024.04.16 |
[C언어] 구조체 (2) | 2024.04.15 |
[C언어] 자료형 (1) | 2024.04.15 |