次のプログラムを実行すると、出力は5になります。
なぜ5ですか?なぜ8ではない? doItで次のプログラムの出力
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