當我運行下面的程序時,輸出是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