在测验中得到了这个问题,但我不明白答案。这是在智能手机应用程序上,所以没有教练询问它。
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define NTHREADS 5
void *myFun(void *x)
{
int tid;
tid = *((int *) x);
printf("Hi from thread %d!\n", tid);
return NULL;
}
int main(int argc, char *argv[])
{
pthread_t threads[NTHREADS];
int thread_args[NTHREADS];
int rc, i;
/* spawn the threads */
for (i=0; i<NTHREADS; ++i)
{
thread_args[i] = i;
printf("spawning thread %d\n", i);
rc = pthread_create(&threads[i], NULL, myFun, (void *) &thread_args[i]);
}
/* wait for threads to finish */
for (i=0; i<NTHREADS; ++i) {
rc = pthread_join(threads[i], NULL);
}
return 1;
}
答案(根据测验)是“13”。我不明白。 X初始化为“0”。因此,当x被传递到开关时,它应该转到案例0,案例0下的指令是打印“1”。我认为这是它正在做的事情,但三者在哪里?这里有休息吗?但是,即使没有中断将流发送到交换机之外,x(零)也不应满足术语“情况2”,因此不应执行打印“3”。也没有默认值,但这比语法错误更糟糕。
任何帮助表示赞赏。所有人都提前致谢!