다음 프로그램을 실행할 때 출력은 5입니다.
왜 5입니까? 왜 8?다음 프로그램의 출력
void *doit(void *vargp) {
int i = 3;
int *ptr = (int*)vargp;
(*ptr)++;
}
int main() {
int i = 0;
pthread_t tid;
pthread_create(&tid, NULL, doit, (void*)&i);
pthread_join(tid,NULL);
i = i + 4;
printf("%d",i);
}
'int i = 3;'은 아무 것도하지 않습니다. 이 행은 결코 사용되지 않는 로컬 변수에 값을 지정합니다. – user3386109
스레드가 의미있는 내용을 추가하지 않으므로 "다음 코드가 5를 인쇄하는 이유는 무엇입니까?"라고 요약 할 수 있습니다. 'int i = 0; 나는 ++; i = i + 4; 그것은 1 + 4 = 5이기 때문입니다. – Lundin