printf() 출력 순서
#include <stdio.h>
int main()
{
int i = 5;
printf("%d, %d, %d, %d", i++, ++i, i++, ++i); // 5 7 7 9 ...?
}
// printf 와 같은 경우는 뒤에서부터 연산을 수행한다
// 전위 증감 연산자가 나올 경우에는 연산이 된 뒤 최종적인 i 값을 참조하게 된다
// 뒤에서 부터 ++i 를 본다. i = 6이 되고, 아무런 연산(+ - * /)이 없으므로 아무것도 출력하지 않는다
// 바로 앞에 있는 i++을 본다. 6을 출력하고 i = 7이 된다
// 바로 앞에 있는 ++i를 본다. i = 8이 되고, 아무런 연산이 없으므로 아무것도 출력하지 않는다
// 바로 앞에 있는 i++을 본다. 8을 출력하고 i = 9가 된다.
// print라는 연산을 만나게 된다. 이때 출력되지 않은 i들이 현재 최종적으로 i에 들어 있는 값으로 출력된다
// 8 9 6 9
#include <stdio.h.>
int main()
{
int i = 5;
printf("%d, %d, %d, %d", --i, i--, i--, --i);
}
// 맨 뒤에서부터 시작. i = 4, 연산이 아무것도 수행되지 않았으므로 출력은 대기
// 4 출력, i = 3
// 3 출력, i = 2
// i = 1 출력은 대기
// print 연산 수행, i 값 참조
// 1 3 4 1
// printf() 안의 --i같은 경우에는 연산을 만나지 않았기 때문에 뭘 참조할지 모르므로 출력 안하고 대기
// 가장 앞까지 가서 printf를 만나게 되면 현재 있는 i 값을 참조하면 된다는 사실을 알게 됨
// i-- 같은 경우에는 i 값을 참조함
// i 만 단독으로 나와도 마찬가지로 연산을 만날때까지 대기함
#include <stdio.h>
int main()
{
int i = 5;
int z = i++ + i++ + i++;
printf("%d, %d",i z); // 8, 18
}
// 후위증감 같은 경우에는 지금 현재 i 값을 참조
// 전위증감 같은 경우에는 연산이 끝났을 때 그 당시의 값을 가져온다
#include <stdio.h>
int main()
{
int i = 5;
int z = ++i + ++i + ++i;
printf("%d, %d",i z); // 8, 22
}
// 후위증감 같은 경우에는 지금 현재 i 값을 참조
// 전위증감 같은 경우에는 연산이 끝났을 때 그 당시의 값을 가져온다
// i=6 하고 i 는 물음표(6을 참조하려고 봤더니 아직 연산을 안해서 뭐가 들어있는지 모름), i = 7하고 i는 물음표
// 앞에 두개의 i에서 i + i 가 되는 시점에 i 의 값을 가져와서 대입
// 7 + 7 + ++i
// 14 + 8
// 22
// ++i는 i+1을 우선적으로 하고 그 다음 연산이 올때까지 대기하는 상태
// i++ 은 연산을 먼저 수행하므로 작업이 완료된 상태
#include <stdio.h>
int main()
{
int i = 5;
int z = ++i + i++ + ++i; // 7 + 6 + 8
printf("%d, %d", i, z); // 8, 21
}
// + 를 하는 시점에 ++i의 i 값은 7
// ++i의 i는 연산 시점의 값임을 명심, 후위 증감 후 연산
fork() : 리눅스에서 자식 프로세스를 생성하는 명령어
다음은 리눅스 환경에서 fork() 시스템 호출을 이용하여 자식 프로세스를 생성하는 C 프로그램이다. 출력 결과로 옳은 것은?
fork 리턴값
실패 : -1 리턴
자식 : 0
부모: 자식 프로세스의 pid(0보다 큼)
fork() 의 실행 순서 부모 → 자식
근데 만약에 wait가 있다면 자식 프로세스가 먼저 돌게됨
원래는 부모 프로세스(pid>0)가 먼저 실행되므로a = ~ b = ~ 순서로 출력되는게 맞는데
wait 가 있으므로 부모프로세스가 잠시 대기하고 자식프로세스가 실행 됨.
따라서 b = ~ a = ~ 순서로 출력됨
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 2020년 2회 실기 기출문제 풀이 (0) | 2024.10.13 |
---|---|
[정보처리기사] 2020년 1회 실기 기출문제 풀이 (0) | 2024.10.11 |
[정보처리기사] C언어 특강 58~60강 정리(중복 재귀함수) (0) | 2024.10.10 |
[정보처리기사] C언어 특강 53~57강 정리(재귀함수) (0) | 2024.10.09 |
[정보처리기사] C언어 특강 49~52강 정리(static 변수) (0) | 2024.10.09 |